Lisp ABCL编译和原语

Lisp ABCL编译和原语,lisp,compilation,common-lisp,primitive-types,abcl,Lisp,Compilation,Common Lisp,Primitive Types,Abcl,有人知道如何(或是否)使用ABCL将Lisp代码编译成.class文件并创建一个main方法,以便将整个过程打包成一个.jar文件并运行吗 另外,有人知道如何从ABCL代码中访问原语Java类型吗?前几天就遇到了这样一个打包问题。如果你想在解决方案周围寻找更多打包,ABCL能够从类装入器理解的URI中加载ASDF定义。ASDF-INSTALL是通过这种机制加载的(使用Ant构建目标'abcl.contrib'),但作为一个简单的示例,下面的代码将动态加载 CL-USER>(推新建#p“jar:h

有人知道如何(或是否)使用ABCL将Lisp代码编译成.class文件并创建一个main方法,以便将整个过程打包成一个.jar文件并运行吗


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

前几天就遇到了这样一个打包问题。

如果你想在解决方案周围寻找更多打包,ABCL能够从类装入器理解的URI中加载ASDF定义。ASDF-INSTALL是通过这种机制加载的(使用Ant构建目标'abcl.contrib'),但作为一个简单的示例,下面的代码将动态加载

CL-USER>(推新建#p“jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf uri test/“asdf:*中央注册表*)
(#P“罐: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:负载系统:测试)
; 从jar加载系统定义:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf uri test/test.asd into#
; 将#注册为测试
; 编译jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdfuritest/test.lisp。。。
; (脱风试验…)
; 编写/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秒)
T
CL-USER>(测试)
“已加载测试函数!”
您可以研究这个jar进行打包,但基本上它只涉及创建一个ASDF定义,然后简单地将其打包为一个jar。请注意,JAR只包含Lisp源代码,该源代码通过ASDF2实现自动编译,并通过OUTPUT-TRANSLATION-LOCATION机制编译到本地目录。JAR中的任何Java类文件当前都被忽略。尽管Java类文件应该是“独立于平台的”,但是有足够多的JVM实现(qv.java5vjava6),因此按照ABCL实现编译Lisp是有意义的。当然,也可以通过URI加载ABCL FASL,因此如果有人有一个从不在初始ASDF加载时编译的用例,那么当前的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!"