On 8/24/09 7:10 PM, Eric Marsden wrote:
Indeed, ABCL can only load from the org/armedbear/lisp directory. The following patch to ABCL makes it possible to load from an arbitrary directory of the jar file.
http://article.gmane.org/gmane.lisp.armedbear.devel/62
Patching trunk via the attached patch, trying for a simple case of a file "foo.lisp" containing the form
(defun foo () (format t "sdfsadfsdf"))
compiled with
(let ((sys::*compile-file-zip* t)) (compile-file "foo.lisp" :output-file "foo.jar"))
leads to the following stack trace. I have run out of time right now to investigate more thoroughly, but will get back to this when I can later.
0: (INVOKE-DEBUGGER #<ERROR {CDFD504}>) 1: org.armedbear.lisp.Lisp.error(Lisp.java:348) 2: org.armedbear.lisp.Lisp.loadCompiledFunction(Lisp.java:1136) 3: org.armedbear.lisp.CompiledClosure$1.execute(CompiledClosure.java:221) 4: org.armedbear.lisp.LispThread.execute(LispThread.java:511) 5: org.armedbear.lisp.Lisp.evalCall(Lisp.java:488) 6: org.armedbear.lisp.Lisp.eval(Lisp.java:453) 7: org.armedbear.lisp.Lisp.evalCall(Lisp.java:490) 8: org.armedbear.lisp.Lisp.eval(Lisp.java:453) 9: org.armedbear.lisp.Load.faslLoadStream(Load.java:550) 10: org.armedbear.lisp.Load.access$100(Load.java:47) 11: org.armedbear.lisp.Load$1.execute(Load.java:408) 12: org.armedbear.lisp.LispThread.execute(LispThread.java:528) 13: org.armedbear.lisp.Lisp.evalCall(Lisp.java:495) 14: org.armedbear.lisp.Lisp.eval(Lisp.java:453) 15: org.armedbear.lisp.Load.loadStream(Load.java:518) 16: org.armedbear.lisp.Load.loadFileFromStream(Load.java:479) 17: org.armedbear.lisp.Load.load(Load.java:192) 18: org.armedbear.lisp.Load.load(Load.java:680) 19: org.armedbear.lisp.Load.access$200(Load.java:47) 20: org.armedbear.lisp.Load$2.execute(Load.java:632) 21: org.armedbear.lisp.Symbol.execute(Symbol.java:816) 22: org.armedbear.lisp.LispThread.execute(LispThread.java:563) 23: org.armedbear.lisp.load_1.execute(load.lisp:33) 24: org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:91) 25: org.armedbear.lisp.LispThread.execute(LispThread.java:511) 26: org.armedbear.lisp.Lisp.evalCall(Lisp.java:488) 27: org.armedbear.lisp.Lisp.eval(Lisp.java:453) 28: org.armedbear.lisp.Primitives$16.execute(Primitives.java:305) 29: (SYSTEM:LOAD-COMPILED-FUNCTION "foo-1.cls") 30: (SYSTEM:INIT-FASL :VERSION 32) 31: (SYSTEM::%LOAD #P"jar:file:/Users/evenson/work/abcl/foo.jar!/foo" NIL NIL T) 32: (LOAD "jar:file:/Users/evenson/work/abcl/foo.jar!/foo") 33: (SYSTEM::%EVAL (LOAD "jar:file:/Users/evenson/work/abcl/foo.jar!/foo")) 34: (EVAL (LOAD "jar:file:/Users/evenson/work/abcl/foo.jar!/foo"))