Question

Quelqu'un sait comment (ou si) vous pouvez utiliser ABCL pour compiler le code Lisp aux fichiers .class et créer une méthode principale pour que la chose pourrait être emballé dans un fichier .jar et exécuter?

En outre, personne ne sait comment les primitives d'accès types Java à partir du code ABCL?

Était-ce utile?

La solution

Didier Verner a publié son expériences avec la question de l'emballage juste comme l'autre jour.

Autres conseils

Si l'on cherche plus d'emballage autour d'une solution, ABCL a la capacité de charge des définitions de ASDF d'un URI que le chargeur de classe comprend. Le ASDF POSER est chargé par ce mécanisme (utilisez la cible Ant build « de abcl.contrib »), mais comme un exemple simple, le code suivant va charger dynamiquement un test trivial de chargement aSDF 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!"

Vous pouvez étudier ce pot pour l'emballage, mais au fond, il implique simplement la création d'une définition de ASDF, puis l'emballage simplement comme un JAR. Notez que le JAR ne contient que la source Lisp qui est automatiquement compilé par la mise en œuvre de ASDF2 dans un répertoire local via le mécanisme SORTIE TRANSLATION-LIEU. Tous les fichiers de classe Java dans le JAR sont actuellement ignorés. Bien que les fichiers de classes Java doivent être « indépendants de la plate-forme », il y a des implémentations de la JVM assez là-bas (QV. Java 5 v Java 6) qu'il est logique de compiler la mise en œuvre par Lisp ABCL. Il est certainement la possibilité de charger un aussi bien ABCL FASL via URI de sorte que la mise en œuvre de ASDF actuelle pourrait probablement être modifié si quelqu'un a un cas d'utilisation pour ne jamais compiler de la charge initiale de ASDF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top