ABCLを使用して.classファイルをコンパイルしてmainメソッドを作成する方法を知っている人なら誰でも.jarファイルにパッケージ化して実行できますか?ABCLのコンパイルとプリミティブ
また、誰もABCLコードからJavaタイプのプリミティブにアクセスする方法を知っていますか?先日、このような梱包の質問のみで
ABCLを使用して.classファイルをコンパイルしてmainメソッドを作成する方法を知っている人なら誰でも.jarファイルにパッケージ化して実行できますか?ABCLのコンパイルとプリミティブ
また、誰もABCLコードからJavaタイプのプリミティブにアクセスする方法を知っていますか?先日、このような梱包の質問のみで
解決策のパッケージをもっと探したい場合、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としてそれをパッケージ化、空自の定義を作成する必要があります。 JARにはLispソースが含まれているだけで、ASDF2実装からOUTPUT-TRANSLATION-LOCATIONメカニズムを介してローカルディレクトリに自動的にコンパイルされます。 JAR内のJavaクラスファイルは現在無視されます。 Javaクラスファイルは「プラットフォームに依存しない」必要がありますが、十分なJVM実装(qv Java 5 v Java 6)があり、LispをABCLの実装ごとにコンパイルすることは意味があります。 URIを介してABCL FASLを読み込むことは確かに可能です。そのため、初期のASDFロードでコンパイルしないユースケースがあれば、現在のASDF実装をおそらく変更できます。