有人知道如何(或是否)使用ABCL将LISP代码编译为.class文件并创建一个主要方法,以便可以将整个内容包装到.jar文件中并运行?

另外,有人知道如何从ABCL代码访问Pirinives Java类型吗?

有帮助吗?

解决方案

Didier Verner发布了他的经验 前几天只是一个包装问题。

其他提示

如果人们正在寻找围绕解决方案的包装,则ABCL可以从类加载程序理解的URI中加载ASDF定义。 ASDF-install通过此机制加载(使用ANT构建目标“ Abcl.Contrib”),但是作为一个简单的示例,以下代码将动态加载 通过URI对ASDF加载的微不足道测试.

CL-USER> (pushnew #p"jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/" asdf:*central-registry*)
(#P"jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/" #P"jar:file:/Users/evenson/work/abcl/dist/abcl-contrib.jar!/asdf-install/" (MERGE-PATHNAMES ".asdf-install-dir/systems/" (USER-HOMEDIR-PATHNAME)) (MERGE-PATHNAMES "work/lsw/" (USER-HOMEDIR-PATHNAME)))
CL-USER> (asdf:load-system :test)
; Loading system definition from jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/test.asd into #<PACKAGE "ASDF0">
; Registering #<SYSTEM :TEST> as TEST
; Compiling jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/test.lisp ...
; (DEFUN TEST ...)
; Wrote /Users/evenson/.cache/common-lisp/abcl-0.25.0-dev-fasl37-macosx-java/files/asdf-uri-test.jar/asdf-uri-test/ASDF-TMP-test.abcl (0.163 seconds)
T
CL-USER> (test)
"The test function loaded!"

您可以研究该罐子以进行包装,但基本上它仅涉及创建ASDF定义,然后将其作为罐子包装。请注意,JAR仅包含LISP源,该源会通过ASDF2实现自动编译为通过输出转换位置机制到本地目录。目前,JAR中的任何Java类文件都被忽略。尽管Java类文件应该是“平台独立的”,但那里有足够的JVM实现(QV。Java5 V Java 6),可以编译每个ABCL实现的LISP是有意义的。当然,也可以通过URI加载ABCL FASL,因此如果某人有没有用例ASDF负载来编译初始ASDF负载,则可能会修改当前的ASDF实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top