ABCL conflicts with tomcat on ## path names

Blake McBride blake at mcbride.name
Wed May 30 21:22:49 UTC 2018


Thanks, Alan!

Perhaps a special case because tomcat requires that the name starts with
"ROOT##".  I'm pretty sure it has to be uppercase too.

Thanks!

Blake


On Wed, May 30, 2018 at 3:59 PM, Alan Ruttenberg <alanruttenberg at gmail.com>
wrote:

> Ah. I'll have to defer to Mark on this. What's happening is that
> Pathname.makeURL is being called, I think so as to be able to load classes
> from the ABCL jar file. makeURL creates a file:// URL, and that fails
> because you can't have ## in a URL.
>
> Presumably you get a nastier error than I do because not enough of lisp is
> set up to report it better.
>
> I can think of a number of ways of fixing it, in principle, but I've not
> worked in that are of ABCL and it's delicate enough that I'm not keen to.
>
> Practically, you probably want to situate in a path that doesn't include
> "##" (generic advice "don't do that" :-/)
>
> What's worse is that it seems you will have problems even with a single "#"
> (pathname "file:///foo.com/#r") -> #P"/foo.com"
> That's a bug...
>
> Maybe Mark can figure out how it could be delicately fixed...
>
> Alan
>
> On Wed, May 30, 2018 at 4:23 PM, Blake McBride <blake at mcbride.name> wrote:
>
>> I get that error when I execute the following from Java:
>>
>> interpreter = Interpreter.createInstance();
>>
>>
>> That is what is at com.arahant.lisp.ABCL.init(ABCL.java:35)
>>
>>
>>
>> On Wed, May 30, 2018 at 2:43 PM, Alan Ruttenberg <
>> alanruttenberg at gmail.com> wrote:
>>
>>> Can say what you mean by "work"?
>>>
>>> I can make an use pathname with "##" in it without error.
>>> If for pathname I use a URI instead, I get an error about the second "#"
>>> which is illegal in the fragment name. If you were doing that in web
>>> standards you would need to percent-encode the second "#"
>>>
>>> But how to quote inside filenames in lisp is confusing to me. Is it even
>>> specified?
>>>
>>> I made a file called ~/a##b
>>> (probe-file "/Users/alanr/a##b") succeeds
>>>
>>> (probe-file "file:///Users/alanr/a##b") fails: "Improper URI syntax for
>>> 'file:/Users/lori/repos/bfo-theory/tex/a##b':
>>> java.net.URISyntaxException: Illegal character in fragment at index 42:
>>> file:///Users/lori/repos/bfo-theory/tex/a##b"
>>>
>>> (probe-file "file:///Users/lori/repos/bfo-theory/tex/a#%23b") returns
>>> nil
>>>
>>> Still not the same error as you get.
>>>
>>> On Wed, May 30, 2018 at 1:51 PM, Blake McBride <blake at mcbride.name>
>>> wrote:
>>>
>>>> With tomcat, if you want to change the root application you can
>>>> either rename the directory ROOT or ROOT##myapp.  ROOT#myapp makes a lot of
>>>> sense because it reminds you what's there.  However, that naming convention
>>>> seems to conflict with ABCL.  My app under ROOT works fine, but when I name
>>>> it to ROOT##myapp ABCL gives:
>>>>
>>>> org.armedbear.lisp.IntegrityError
>>>> at org.armedbear.lisp.Primitives$pf_error.execute(Primitives.java:1577)
>>>> at org.armedbear.lisp.Primitive.execute(Primitive.java:113)
>>>> at org.armedbear.lisp.Symbol.execute(Symbol.java:803)
>>>> at org.armedbear.lisp.Lisp.error(Lisp.java:383)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:222)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:102)
>>>> at org.armedbear.lisp.Pathname.truename(Pathname.java:2275)
>>>> at org.armedbear.lisp.Load.findLoadableFile(Load.java:69)
>>>> at org.armedbear.lisp.Load.loadSystemFile(Load.java:305)
>>>> at org.armedbear.lisp.Interpreter.initializeLisp(Interpreter.java:172)
>>>> at org.armedbear.lisp.Interpreter.createInstance(Interpreter.java:72)
>>>> at com.arahant.lisp.ABCL.init(ABCL.java:35)
>>>> at com.arahant.utils.StartupListener.contextInitialized(Startup
>>>> Listener.java:225)
>>>> at org.apache.catalina.core.StandardContext.listenerStart(Stand
>>>> ardContext.java:4792)
>>>> at org.apache.catalina.core.StandardContext.startInternal(Stand
>>>> ardContext.java:5256)
>>>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>>>> at org.apache.catalina.core.ContainerBase.addChildInternal(Cont
>>>> ainerBase.java:754)
>>>> at org.apache.catalina.core.ContainerBase.addChild(ContainerBas
>>>> e.java:730)
>>>> at org.apache.catalina.core.StandardHost.addChild(StandardHost.
>>>> java:734)
>>>> at org.apache.catalina.startup.HostConfig.deployDirectory(HostC
>>>> onfig.java:1140)
>>>> at org.apache.catalina.startup.HostConfig$DeployDirectory.run(H
>>>> ostConfig.java:1875)
>>>> at java.util.concurrent.Executors$RunnableAdapter.call(Executor
>>>> s.java:511)
>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>>>> Executor.java:1149)
>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>>>> lExecutor.java:624)
>>>> at java.lang.Thread.run(Thread.java:748)
>>>> ERROR placeholder called with arguments:
>>>> Failed to get cached ZipFile because java.io.FileNotFoundException:
>>>> /home/arahant/apache-tomcat-8.5.31/demo/ROOT (No such file or
>>>> directory)
>>>> Failed to get cached ZipFile because java.io.FileNotFoundException:
>>>> /home/arahant/apache-tomcat-8.5.31/demo/ROOT (No such file or
>>>> directory)
>>>> [ERROR] [utils.StartupListener    ] - 2018-05-30 12:42:02 Error
>>>> initializing Lisp.
>>>> org.armedbear.lisp.IntegrityError
>>>> at org.armedbear.lisp.Primitives$pf_error.execute(Primitives.java:1577)
>>>> at org.armedbear.lisp.Primitive.execute(Primitive.java:113)
>>>> at org.armedbear.lisp.Symbol.execute(Symbol.java:803)
>>>> at org.armedbear.lisp.Lisp.error(Lisp.java:383)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:222)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:102)
>>>> at org.armedbear.lisp.Pathname.truename(Pathname.java:2275)
>>>> at org.armedbear.lisp.Load.findLoadableFile(Load.java:69)
>>>> at org.armedbear.lisp.Load.loadSystemFile(Load.java:305)
>>>> at org.armedbear.lisp.Interpreter.initializeLisp(Interpreter.java:172)
>>>> at org.armedbear.lisp.Interpreter.createInstance(Interpreter.java:72)
>>>> at com.arahant.lisp.ABCL.init(ABCL.java:35)
>>>> at com.arahant.utils.StartupListener.contextInitialized(Startup
>>>> Listener.java:225)
>>>> at org.apache.catalina.core.StandardContext.listenerStart(Stand
>>>> ardContext.java:4792)
>>>> at org.apache.catalina.core.StandardContext.startInternal(Stand
>>>> ardContext.java:5256)
>>>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>>>> at org.apache.catalina.core.ContainerBase.addChildInternal(Cont
>>>> ainerBase.java:754)
>>>> at org.apache.catalina.core.ContainerBase.addChild(ContainerBas
>>>> e.java:730)
>>>> at org.apache.catalina.core.StandardHost.addChild(StandardHost.
>>>> java:734)
>>>> at org.apache.catalina.startup.HostConfig.deployDirectory(HostC
>>>> onfig.java:1140)
>>>> at org.apache.catalina.startup.HostConfig$DeployDirectory.run(H
>>>> ostConfig.java:1875)
>>>> at java.util.concurrent.Executors$RunnableAdapter.call(Executor
>>>> s.java:511)
>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>>>> Executor.java:1149)
>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>>>> lExecutor.java:624)
>>>> at java.lang.Thread.run(Thread.java:748)
>>>> org.armedbear.lisp.IntegrityError
>>>> at org.armedbear.lisp.Primitives$pf_error.execute(Primitives.java:1577)
>>>> at org.armedbear.lisp.Primitive.execute(Primitive.java:113)
>>>> at org.armedbear.lisp.Symbol.execute(Symbol.java:803)
>>>> at org.armedbear.lisp.Lisp.error(Lisp.java:383)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:222)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:102)
>>>> at org.armedbear.lisp.Pathname.truename(Pathname.java:2275)
>>>> at org.armedbear.lisp.Load.findLoadableFile(Load.java:69)
>>>> at org.armedbear.lisp.Load.loadSystemFile(Load.java:305)
>>>> at org.armedbear.lisp.Interpreter.initializeLisp(Interpreter.java:172)
>>>> at org.armedbear.lisp.Interpreter.createInstance(Interpreter.java:72)
>>>> at com.arahant.lisp.ABCL.init(ABCL.java:35)
>>>> at com.arahant.utils.StartupListener.contextInitialized(Startup
>>>> Listener.java:225)
>>>> at org.apache.catalina.core.StandardContext.listenerStart(Stand
>>>> ardContext.java:4792)
>>>> at org.apache.catalina.core.StandardContext.startInternal(Stand
>>>> ardContext.java:5256)
>>>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>>>> at org.apache.catalina.core.ContainerBase.addChildInternal(Cont
>>>> ainerBase.java:754)
>>>> at org.apache.catalina.core.ContainerBase.addChild(ContainerBas
>>>> e.java:730)
>>>> at org.apache.catalina.core.StandardHost.addChild(StandardHost.
>>>> java:734)
>>>> at org.apache.catalina.startup.HostConfig.deployDirectory(HostC
>>>> onfig.java:1140)
>>>> at org.apache.catalina.startup.HostConfig$DeployDirectory.run(H
>>>> ostConfig.java:1875)
>>>> at java.util.concurrent.Executors$RunnableAdapter.call(Executor
>>>> s.java:511)
>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>>>> Executor.java:1149)
>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>>>> lExecutor.java:624)
>>>> at java.lang.Thread.run(Thread.java:748)
>>>> [ERROR] [utils.StartupListener    ] - org.armedbear.lisp.IntegrityError
>>>> at org.armedbear.lisp.Primitives$pf_error.execute(Primitives.java:1577)
>>>> at org.armedbear.lisp.Primitive.execute(Primitive.java:113)
>>>> at org.armedbear.lisp.Symbol.execute(Symbol.java:803)
>>>> at org.armedbear.lisp.Lisp.error(Lisp.java:383)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:222)
>>>> at org.armedbear.lisp.ZipCache.get(ZipCache.java:102)
>>>> at org.armedbear.lisp.Pathname.truename(Pathname.java:2275)
>>>> at org.armedbear.lisp.Load.findLoadableFile(Load.java:69)
>>>> at org.armedbear.lisp.Load.loadSystemFile(Load.java:305)
>>>> at org.armedbear.lisp.Interpreter.initializeLisp(Interpreter.java:172)
>>>> at org.armedbear.lisp.Interpreter.createInstance(Interpreter.java:72)
>>>> at com.arahant.lisp.ABCL.init(ABCL.java:35)
>>>> at com.arahant.utils.StartupListener.contextInitialized(Startup
>>>> Listener.java:225)
>>>> at org.apache.catalina.core.StandardContext.listenerStart(Stand
>>>> ardContext.java:4792)
>>>> at org.apache.catalina.core.StandardContext.startInternal(Stand
>>>> ardContext.java:5256)
>>>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>>>> at org.apache.catalina.core.ContainerBase.addChildInternal(Cont
>>>> ainerBase.java:754)
>>>> at org.apache.catalina.core.ContainerBase.addChild(ContainerBas
>>>> e.java:730)
>>>> at org.apache.catalina.core.StandardHost.addChild(StandardHost.
>>>> java:734)
>>>> at org.apache.catalina.startup.HostConfig.deployDirectory(HostC
>>>> onfig.java:1140)
>>>> at org.apache.catalina.startup.HostConfig$DeployDirectory.run(H
>>>> ostConfig.java:1875)
>>>> at java.util.concurrent.Executors$RunnableAdapter.call(Executor
>>>> s.java:511)
>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>>>> Executor.java:1149)
>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>>>> lExecutor.java:624)
>>>> at java.lang.Thread.run(Thread.java:748)
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20180530/a8895f45/attachment-0001.html>


More information about the armedbear-devel mailing list