2011-01-21 8 views
5

ABCLを使用して.classファイルをコンパイルしてmainメソッドを作成する方法を知っている人なら誰でも.jarファイルにパッケージ化して実行できますか?ABCLのコンパイルとプリミティブ

また、誰もABCLコードからJavaタイプのプリミティブにアクセスする方法を知っていますか?先日、このような梱包の質問のみで

答えて

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としてそれをパッケージ化、空自の定義を作成する必要があります。 JARにはLispソースが含まれているだけで、ASDF2実装からOUTPUT-TRANSLATION-LOCATIONメカニズムを介してローカルディレクトリに自動的にコンパイルされます。 JAR内のJavaクラスファイルは現在無視されます。 Javaクラスファイルは「プラットフォームに依存しない」必要がありますが、十分なJVM実装(qv Java 5 v Java 6)があり、LispをABCLの実装ごとにコンパイルすることは意味があります。 URIを介してABCL FASLを読み込むことは確かに可能です。そのため、初期のASDFロードでコンパイルしないユースケースがあれば、現在のASDF実装をおそらく変更できます。

関連する問題