
Putting that code in system.lisp isn't going to help the finding of boot.lisp which needs to happen first to bring the interpreter up. That said, having a hook in the build process so that users can dump arbitrary forms to system.lisp isn't a bad idea. I think the right way to handle the OSGi context is that we need a way to specify that *LISP-HOME* (confusingly set via the abcl.home Java property) cannot be set to a pathname, so all loading of system files has to occur by using the getResource() method of the classloader that instantiated Lisp.class. That OSGi code should install a jar handler for the URI scheme which the Pathname code should use automatically, but maybe it's associated with a different class loader of something. We should probably assert that TRUENAME returns something after we think we have a pathname, falling back to NIL before we pass to the load syst fole routine. When I get to a computer tommorrow I can whip out a quick patch to try, but it would be better if you could provide some idea of the code your trying for the Protege plugin—which I think is RCP based if I remember correctly—so I can test a bit. Tersely written from my iPod On Mar 11, 2010, at 12:22 AM, Alan Ruttenberg <alanruttenberg@gmail.com> wrote:
On Wed, Mar 10, 2010 at 5:29 PM, Alessio Stalla <alessiostalla@gmail.com
wrote: On Wed, Mar 10, 2010 at 11:06 PM, Timothy Redmond <tredmond@stanford.edu
wrote: On Wed, 2010-03-10 at 22:19 +0100, Alessio Stalla wrote:
On Wed, Mar 10, 2010 at 9:14 PM, Alan Ruttenberg <alanruttenberg@gmail.com> wrote:
Protege is an ontology development tool. I'm interested in using abcl to develop plugins and TIm Redmond was kind enough to have a stab at doing a first pass integration, but ran into trouble. I wonder if his report makes rings a bell?
Surely the function/class loading code has changed quite a lot since 0.18.1, so I'd advise you to try with abcl from trunk (or wait till 0.19 is released). Maybe the problem won't go away, but it's worth trying - at least we'll get a stack trace that's more meaningful wrt. the current state of affairs.
I included the error on trunk below. The url returned by the class loader has the wrong format. For some reason this url is being parsed in the Pathname class and it gets into trouble. I was thinking that it might be possible for me to make a minimal change to the code somehow to fix this but I have not yet figured out exactly how to make this change.
Pathname represents a path to a file or, since recently, an entry in a Jar file, but it's not able to represent an arbitrary URL.
I know little about OSGi, but probably it requires some special handling if one wants to explicitly load resources like ABCL does.
As an attempt which I really doubt will work, you can try this: since what is failing is getLispHome() in class Site, and that can also use the "abcl.home" system property, you could try to set that property to "jar:file:/whatever/abcl.jar!/org/armedbear/lisp/" before loading ABCL and cross your fingers. You'll probably get past the current failing point but some other things will probably fail. Even if it works, it's not a good solution at all; still, it might serve as a temporary hack until we figure out how to behave in a OSGi context.
A bit better is to not hardcode the location:
(defvar *abcl-jar* (make-pathname :device (pathname-device (java::jcall "toString" (java::jcall "getResource" (java::jclass "org.armedbear.lisp.Main") "/org/armedbear/lisp/Main.class")))))
Can we put that in system.lisp?
-Alan
Alessio
-Timothy
java.lang.Error at org.armedbear.lisp.Primitives$pf_error.execute (Primitives.java:1561) at org.armedbear.lisp.Primitive.execute(Primitive.java:108) at org.armedbear.lisp.Symbol.execute(Symbol.java:775) at org.armedbear.lisp.Lisp.error(Lisp.java:357) at org.armedbear.lisp.Pathname.<init>(Pathname.java:184) at org.armedbear.lisp.Site.init(Site.java:59) at org.armedbear.lisp.Site.getLispHome(Site.java:72) at org.armedbear.lisp.Site.<clinit>(Site.java:82) at org.armedbear.lisp.Load.loadSystemFile(Load.java:255) at org.armedbear.lisp.Interpreter.initializeLisp (Interpreter.java:158) at org.armedbear.lisp.Interpreter.createInstance (Interpreter.java:69) at org.sciencecommons.protege.lisp.LispContext.<init> (LispContext.java:14) at org.sciencecommons.protege.lisp.LispContext.getInstance (LispContext.java:20) at org.sciencecommons.protege.lisp.Activator.start (Activator.java:13) at org.apache.felix.framework.util.SecureAction.startActivator (SecureAction.java:639) at org.apache.felix.framework.Felix.activateBundle (Felix.java:1700) at org.apache.felix.framework.Felix.startBundle(Felix.java: 1622) at org.apache.felix.framework.BundleImpl.start (BundleImpl.java:915) at org.apache.felix.framework.BundleImpl.start (BundleImpl.java:902) at org.protege.editor.core.BundleManager.startPlugins (BundleManager.java:110) at org.protege.editor.core.BundleManager.loadPlugins (BundleManager.java:41) at org.protege.editor.core.ProtegeApplication.loadPlugins (ProtegeApplication.java:277) at org.protege.editor.core.ProtegeApplication.initApplication (ProtegeApplication.java:171) at org.protege.editor.core.ProtegeApplication.start (ProtegeApplication.java:113) at org.apache.felix.framework.util.SecureAction.startActivator (SecureAction.java:639) at org.apache.felix.framework.Felix.activateBundle (Felix.java:1700) at org.apache.felix.framework.Felix.startBundle(Felix.java: 1622) at org.apache.felix.framework.Felix.setActiveStartLevel (Felix.java:1077) at org.apache.felix.framework.StartLevelImpl.run (StartLevelImpl.java:264) at java.lang.Thread.run(Thread.java:619) ERROR placeholder called with arguments: #<ERROR {1876E5D}> Unsupported URL: 'bundle://10.0:2/org/armedbear/lisp/boot.lisp'
Alessio
-Alan
---------- Forwarded message ---------- From: Timothy Redmond <tredmond@stanford.edu> Date: Wed, Mar 10, 2010 at 2:12 PM Subject: [POSSIBLE VIRUS:###] Re: further on common lisp integration To: Alan Ruttenberg <alanruttenberg@gmail.com>
There is something of a difficulty in using this library. It is doing some funky stuff with urls and class loaders and this doesn't work with Protege. Probably could be made to work by making some changes to the abcl sources. In particular it seems to detect that it is loading through the class loader if the prefix begins with jar which is not a correct assumption in general.
But here is a start if you want to debug a bit more.
-Timothy
java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:114) at java.util.zip.ZipFile.<init>(ZipFile.java:75) at org.armedbear.lisp.ZipCache.getZip(ZipCache.java:54) at org.armedbear.lisp.Lisp.readFunctionBytes(Lisp.java: 1305) at org.armedbear.lisp.AutoloadedFunctionProxy$2.execute (AutoloadedFunctionProxy.java:307) at org.armedbear.lisp.LispThread.execute(LispThread.java: 562) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:494) at org.armedbear.lisp.Lisp.eval(Lisp.java:459) at org.armedbear.lisp.Lisp.processTagBody(Lisp.java:767) at org.armedbear.lisp.dotimes.execute(dotimes.java:105) at org.armedbear.lisp.Lisp.eval(Lisp.java:449) at org.armedbear.lisp.Load.faslLoadStream(Load.java:628) at org.armedbear.lisp.Load.access$100(Load.java:70) at org.armedbear.lisp.Load$1.execute(Load.java:485) at org.armedbear.lisp.LispThread.execute(LispThread.java: 579) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:501) at org.armedbear.lisp.Lisp.eval(Lisp.java:459) at org.armedbear.lisp.Load.loadStream(Load.java:593) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 556) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 499) at org.armedbear.lisp.Load.loadSystemFile(Load.java:415) at org.armedbear.lisp.Load$4.execute(Load.java:774) at org.armedbear.lisp.LispThread.execute(LispThread.java: 562) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:494) at org.armedbear.lisp.Lisp.eval(Lisp.java:459) at org.armedbear.lisp.Load.loadStream(Load.java:593) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 556) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 499) at org.armedbear.lisp.Load.loadSystemFile(Load.java:415) at org.armedbear.lisp.Interpreter.initializeLisp (Interpreter.java:158) at org.armedbear.lisp.Interpreter.createInstance (Interpreter.java:69) at org.sciencecommons.protege.lisp.LispContext.<init> (LispContext.java:14) at org.sciencecommons.protege.lisp.LispContext.getInstance (LispContext.java:20) at org.sciencecommons.protege.lisp.Activator.start (Activator.java:13) at org.apache.felix.framework.util.SecureAction.startActivator (SecureAction.java:639) at org.apache.felix.framework.Felix.activateBundle (Felix.java:1700) at org.apache.felix.framework.Felix.startBundle (Felix.java:1622) at org.apache.felix.framework.BundleImpl.start (BundleImpl.java:915) at org.apache.felix.framework.BundleImpl.start (BundleImpl.java:902) at org.protege.editor.core.BundleManager.startPlugins (BundleManager.java:110) at org.protege.editor.core.BundleManager.loadPlugins (BundleManager.java:41) at org.protege.editor.core.ProtegeApplication.loadPlugins (ProtegeApplication.java:277) at org.protege.editor.core.ProtegeApplication.initApplication (ProtegeApplication.java:171) at org.protege.editor.core.ProtegeApplication.start (ProtegeApplication.java:113) at org.apache.felix.framework.util.SecureAction.startActivator (SecureAction.java:639) at org.apache.felix.framework.Felix.activateBundle (Felix.java:1700) at org.apache.felix.framework.Felix.startBundle (Felix.java:1622) at org.apache.felix.framework.Felix.setActiveStartLevel (Felix.java:1077) at org.apache.felix.framework.StartLevelImpl.run (StartLevelImpl.java:264) at java.lang.Thread.run(Thread.java:619) java.lang.Error at org.armedbear.lisp.Primitives$70.execute (Primitives.java:1462) at org.armedbear.lisp.Primitive.execute(Primitive.java:108) at org.armedbear.lisp.Symbol.execute(Symbol.java:770) at org.armedbear.lisp.Lisp.error(Lisp.java:354) at org.armedbear.lisp.Lisp.readFunctionBytes(Lisp.java: 1329) at org.armedbear.lisp.AutoloadedFunctionProxy$2.execute (AutoloadedFunctionProxy.java:307) at org.armedbear.lisp.LispThread.execute(LispThread.java: 562) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:494) at org.armedbear.lisp.Lisp.eval(Lisp.java:459) at org.armedbear.lisp.Lisp.processTagBody(Lisp.java:767) at org.armedbear.lisp.dotimes.execute(dotimes.java:105) at org.armedbear.lisp.Lisp.eval(Lisp.java:449) at org.armedbear.lisp.Load.faslLoadStream(Load.java:628) at org.armedbear.lisp.Load.access$100(Load.java:70) at org.armedbear.lisp.Load$1.execute(Load.java:485) at org.armedbear.lisp.LispThread.execute(LispThread.java: 579) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:501) at org.armedbear.lisp.Lisp.eval(Lisp.java:459) at org.armedbear.lisp.Load.loadStream(Load.java:593) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 556) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 499) at org.armedbear.lisp.Load.loadSystemFile(Load.java:415) at org.armedbear.lisp.Load$4.execute(Load.java:774) at org.armedbear.lisp.LispThread.execute(LispThread.java: 562) at org.armedbear.lisp.Lisp.evalCall(Lisp.java:494) at org.armedbear.lisp.Lisp.eval(Lisp.java:459) at org.armedbear.lisp.Load.loadStream(Load.java:593) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 556) at org.armedbear.lisp.Load.loadFileFromStream(Load.java: 499) at org.armedbear.lisp.Load.loadSystemFile(Load.java:415) at org.armedbear.lisp.Interpreter.initializeLisp (Interpreter.java:158) at org.armedbear.lisp.Interpreter.createInstance (Interpreter.java:69) at org.sciencecommons.protege.lisp.LispContext.<init> (LispContext.java:14) at org.sciencecommons.protege.lisp.LispContext.getInstance (LispContext.java:20) at org.sciencecommons.protege.lisp.Activator.start (Activator.java:13) at org.apache.felix.framework.util.SecureAction.startActivator (SecureAction.java:639) at org.apache.felix.framework.Felix.activateBundle (Felix.java:1700) at org.apache.felix.framework.Felix.startBundle (Felix.java:1622) at org.apache.felix.framework.BundleImpl.start (BundleImpl.java:915) at org.apache.felix.framework.BundleImpl.start (BundleImpl.java:902) at org.protege.editor.core.BundleManager.startPlugins (BundleManager.java:110) at org.protege.editor.core.BundleManager.loadPlugins (BundleManager.java:41) at org.protege.editor.core.ProtegeApplication.loadPlugins (ProtegeApplication.java:277) at org.protege.editor.core.ProtegeApplication.initApplication (ProtegeApplication.java:171) at org.protege.editor.core.ProtegeApplication.start (ProtegeApplication.java:113) at org.apache.felix.framework.util.SecureAction.startActivator (SecureAction.java:639) at org.apache.felix.framework.Felix.activateBundle (Felix.java:1700) at org.apache.felix.framework.Felix.startBundle (Felix.java:1622) at org.apache.felix.framework.Felix.setActiveStartLevel (Felix.java:1077) at org.apache.felix.framework.StartLevelImpl.run (StartLevelImpl.java:264) at java.lang.Thread.run(Thread.java:619)
_______________________________________________ armedbear-devel mailing list armedbear-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel
_______________________________________________ armedbear-devel mailing list armedbear-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel