ABCL编译和原语

时间:2011-01-21 21:19:07

标签: lisp compilation common-lisp primitive-types abcl

有谁知道如何(或者如果)你可以使用ABCL将Lisp代码编译为.class文件并创建一个main方法,以便将整个文件打包成.jar文件并运行?

另外,有没有人知道如何从ABCL代码访问原语Java类型?

2 个答案:

答案 0 :(得分:2)

Didier Verner posted his experiences前几天只有这样的包装问题。

答案 1 :(得分:0)

如果正在寻找解决方案的更多包装,ABCL能够从类加载器理解的URI加载ASDF定义。的ASDF-INSTALL被该机构(使用Ant构建目标“abcl.contrib”)装载,但作为一个简单的例子,下面的代码将动态加载a trivial test of ASDF loading via URI

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!"

您可以研究该jar用于打包,但基本上它只涉及创建ASDF定义,然后将其打包为JAR。需要注意的是,JAR只包含这是自动通过ASDF2执行经由输出翻译-LOCATION机制编译到本地目录Lisp的来源。当前忽略JAR中的任何Java类文件。虽然Java类文件应该是“独立于平台”,也有足够的JVM实现在那里(请参阅。Java的5 V Java 6中),它是有道理的编译每ABCL实现Lisp的。当然是有加载通过URI的ABCL FASL以及因此,如果有人对初始ASDF负载从未编译使用情况下,当前航空自卫队实施很可能被修改的能力。