Domanda

Qualcuno sa come (o se) è possibile utilizzare ABCL di compilare il codice Lisp per file .class e creare un metodo principale in modo che il tutto potrebbe essere confezionato in un file .jar ed eseguire?

Inoltre, qualcuno sa come le primitive di accesso tipi Java dal codice ABCL?

È stato utile?

Soluzione

Didier Verner ha inviato il suo esperienze con una simile domanda confezione un l'altro giorno.

Altri suggerimenti

Se si è alla ricerca di più il confezionamento in giro una soluzione, ABCL ha la capacità di carico di definizioni ASDF da un URI che il caricatore di classe capisce. L'ASDF-installazione è caricato da questo meccanismo (utilizzare il Ant build target 'abcl.contrib'), ma come un semplice esempio, il seguente codice caricare dinamicamente una prova banale di ASDF carico tramite 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!"

E 'possibile studiare quel vaso per il confezionamento, ma in fondo è solo comporta la creazione di una definizione di ASDF, poi semplicemente imballaggio come un JAR. Si noti che il JAR contiene solo fonte Lisp che viene compilato automaticamente tramite l'implementazione ASDF2 in una directory locale attraverso il meccanismo di OUTPUT-TRANSLATION-LOCATION. Tutti i file di classe Java nel JAR sono attualmente ignorati. Anche se i file di classe Java dovrebbero essere "indipendente dalla piattaforma", ci sono abbastanza implementazioni JVM là fuori (vedi voce. Java 5 v Java 6) che ha senso per compilare l'attuazione Lisp per ABCL. V'è certamente la capacità di caricare un FASL ABCL tramite URI pure così l'attuazione ASDF corrente potrebbe probabilmente essere modificata se qualcuno ha un caso d'uso per la compilazione mai il carico ASDF iniziale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top