ABCL -Zusammenstellung und Primitive
-
16-10-2019 - |
Frage
Weiß jemand, wie (oder ob) Sie ABCL verwenden können, um Lisp -Code für .Cass -Dateien zu kompilieren und eine Hauptmethode zu erstellen, damit das Ganze in eine .jar -Datei verpackt und ausgeführt werden kann?
Weiß jemand, wie man vom ABCL -Code auf Primitive -Java -Typen zugreift?
Lösung
Didier Verner hat seine Erfahrungen gepostet mit einer solchen Verpackungsfrage neulich.
Andere Tipps
Wenn man nach mehr Verpackungen um eine Lösung sucht, kann ABCL ASDF -Definitionen von einem URI laden, den der Klassenlader versteht. Die ASDF-Installation wird durch diesen Mechanismus geladen (verwenden Ein trivialer Test des ASDF -Ladens über 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!"
Sie können dieses Glas für Verpackungen studieren, aber im Grunde beinhaltet es nur die Erstellung einer ASDF -Definition und dann einfach als Glas. Beachten Sie, dass das JAR nur Lisp-Quelle enthält, die automatisch über die ASDF2-Implementierung in ein lokales Verzeichnis über den Ausgangsübertragungsmechanismus kompiliert wird. Alle Java -Klassendateien im Glas werden derzeit ignoriert. Obwohl Java -Klassendateien "plattformunabhängig" sein sollten, gibt es da draußen genügend JVM -Implementierungen (QV. Java 5 V Java 6), dass es sinnvoll ist, die LISP pro ABCL -Implementierung zu kompilieren. Es gibt sicherlich die Möglichkeit, eine Abcl -Fasl auch über URI zu laden, sodass die aktuelle ASDF -Implementierung wahrscheinlich geändert werden kann, wenn jemand einen Anwendungsfall für die Nie bei der anfänglichen ASDF -Last hat.