Opened 4 weeks ago

Last modified 2 weeks ago

#2644 assigned defect

Bote does not start after updating to 0.9.43

Reported by: subatomic Owned by: str4d
Priority: major Milestone: undecided
Component: apps/plugins Version: 0.9.43
Keywords: I2P-Bote Cc:
Parent Tickets: #2601 Sensitive: no

Description

Trying open Bote web UI:

Error 404: /i2pbote/index.jsp not found.

Logs contain:

WARN [le Jetty-112] rg.eclipse.jetty.server.Server: Failed startup of context o.e.j.w.WebAppContext?@13b6c05{/i2pbote,jar:file:/home/user/.i2p/plugins/i2pbote/console/webapps/i2pbote.war!/,null}{/i2pbote.war}: java.net.MalformedURLException: Nested JAR URLs are not supported

Subtickets

Change History (8)

comment:1 Changed 4 weeks ago by zzz

Is this a Debian/Ubuntu? package install or not?
Please report Jetty version from the top of /logs
Cannot reproduce here on Jetty 9.2.25
Possibly related: #2601
Bote is unmaintained, if the fix has to be on the Bote side it won't happen soon.

comment:2 in reply to:  1 Changed 4 weeks ago by subatomic

Replying to zzz:

Is this a Debian/Ubuntu? package install or not?

No, this is a stand alone install

Please report Jetty version from the top of /logs

I2P version: 0.9.43-0
Java version: Oracle Corporation 1.8.0_231 (Java™ SE Runtime Environment 1.8.0_231-b11)
Wrapper version: 3.5.35
Server version: 9.2.25.v20180606
Servlet version: Jasper JSP 2.3 Engine
JSTL version: standard-taglib 1.2.0

comment:3 Changed 4 weeks ago by zzz

OK, thanks for the info. Please do the following:

on /configlogging, set org.eclipse.jetty.server.Server=WARN and save
on /configplugins, start i2pbote
on /logs, you should now have a full stack trace of the error instead of just the the single line you provided in the OP. Paste the full stack trace here.

comment:4 Changed 4 weeks ago by Reportage

Tomcat update in 0.9.43 is the cause of the breakage. Fix is trivial; modify webapp/build.gradle:

-    implementation 'org.apache.tomcat:tomcat-jsp-api:8.5.40'
-    implementation 'org.apache.tomcat:tomcat-servlet-api:8.5.40'
+    implementation 'org.apache.tomcat:tomcat-jsp-api:8.5.46'
+    implementation 'org.apache.tomcat:tomcat-servlet-api:8.5.46'
Last edited 4 weeks ago by Reportage (previous) (diff)

comment:5 Changed 3 weeks ago by zzz

Parent Tickets: 2601
Priority: criticalmajor

If that fixes it, the root cause is likely to be #2601. See also #2592 comments 2 and 5. I predict the stack trace, when we get it here, will be similar to #2592 comment 2.

comment:6 in reply to:  3 Changed 3 weeks ago by subatomic

Replying to zzz:

OK, thanks for the info. Please do the following:

on /configlogging, set org.eclipse.jetty.server.Server=WARN and save
on /configplugins, start i2pbote
on /logs, you should now have a full stack trace of the error instead of just the the single line you provided in the OP. Paste the full stack trace here.

Here is what I get after that:

Oct 28, 2019 6:23:56 PM WARN [ Jetty-11658] rg.eclipse.jetty.server.Server: Bad Resource: jar:jar:file:/home/user/.i2p/plugins/i2pbote/console/webapps/i2pbote.war!/WEB-INF/lib/tomcat-jsp-api-8.5.40.jar!/META-INF/resources
Oct 28, 2019 6:23:56 PM WARN [ Jetty-11658] rg.eclipse.jetty.server.Server: Failed startup of context o.e.j.w.WebAppContext@1ebd732{/i2pbote,jar:file:/home/user/.i2p/plugins/i2pbote/console/webapps/i2pbote.war!/,null}{/i2pbote.war}
     java.net.MalformedURLException: Nested JAR URLs are not supported
     at java.net.URL.<init>(URL.java:644)
     at java.net.URL.<init>(URL.java:507)
     at java.net.URL.<init>(URL.java:456)
     at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:166)
     at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:149)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.scanForResources(MetaInfConfiguration.java:176)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.scanJars(MetaInfConfiguration.java:133)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.preConfigure(MetaInfConfiguration.java:86)
     at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:468)
     at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:504)
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
     at net.i2p.router.web.WebAppStarter.startWebApp(WebAppStarter.java:106)
     at net.i2p.router.web.PluginStarter.startPlugin(PluginStarter.java:478)
     at net.i2p.router.web.helpers.ConfigClientsHandler.startPlugin(ConfigClientsHandler.java:623)
     at net.i2p.router.web.helpers.ConfigClientsHandler.processForm(ConfigClientsHandler.java:116)
     at net.i2p.router.web.FormHandler.process(FormHandler.java:274)
     at net.i2p.router.web.FormHandler.getAllMessages(FormHandler.java:185)
     at net.i2p.router.web.jsp.configplugins_jsp._jspService(configplugins_jsp.java:510)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
     at net.i2p.servlet.filters.XSSFilter.doFilter(XSSFilter.java:30)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
     at net.i2p.router.web.LocaleWebAppHandler.handle(LocaleWebAppHandler.java:104)
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
     at org.eclipse.jetty.servlets.gzip.GzipHandler.handle(GzipHandler.java:529)
     at net.i2p.router.web.HostCheckHandler.handle(HostCheckHandler.java:118)
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
     at org.eclipse.jetty.server.Server.handle(Server.java:499)
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
     at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
     at java.lang.Thread.run(Thread.java:748)
     Caused by: java.lang.NullPointerException: Nested JAR URLs are not supported
     at sun.net.www.protocol.jar.Handler.parseURL(Handler.java:160)
     at java.net.URL.<init>(URL.java:639)
     ... 46 more
Oct 28, 2019 6:23:56 PM WARN [ Jetty-11658] rg.eclipse.jetty.server.Server: FAILED o.e.j.w.WebAppContext@1ebd732{/i2pbote,jar:file:/home/user/.i2p/plugins/i2pbote/console/webapps/i2pbote.war!/,UNAVAILABLE}{/i2pbote.war}: java.net.MalformedURLException: Nested JAR URLs are not supported
     java.net.MalformedURLException: Nested JAR URLs are not supported
     at java.net.URL.<init>(URL.java:644)
     at java.net.URL.<init>(URL.java:507)
     at java.net.URL.<init>(URL.java:456)
     at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:166)
     at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:149)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.scanForResources(MetaInfConfiguration.java:176)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.scanJars(MetaInfConfiguration.java:133)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.preConfigure(MetaInfConfiguration.java:86)
     at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:468)
     at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:504)
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
     at net.i2p.router.web.WebAppStarter.startWebApp(WebAppStarter.java:106)
     at net.i2p.router.web.PluginStarter.startPlugin(PluginStarter.java:478)
     at net.i2p.router.web.helpers.ConfigClientsHandler.startPlugin(ConfigClientsHandler.java:623)
     at net.i2p.router.web.helpers.ConfigClientsHandler.processForm(ConfigClientsHandler.java:116)
     at net.i2p.router.web.FormHandler.process(FormHandler.java:274)
     at net.i2p.router.web.FormHandler.getAllMessages(FormHandler.java:185)
     at net.i2p.router.web.jsp.configplugins_jsp._jspService(configplugins_jsp.java:510)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
     at net.i2p.servlet.filters.XSSFilter.doFilter(XSSFilter.java:30)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
     at net.i2p.router.web.LocaleWebAppHandler.handle(LocaleWebAppHandler.java:104)
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
     at org.eclipse.jetty.servlets.gzip.GzipHandler.handle(GzipHandler.java:529)
     at net.i2p.router.web.HostCheckHandler.handle(HostCheckHandler.java:118)
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
     at org.eclipse.jetty.server.Server.handle(Server.java:499)
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
     at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
     at java.lang.Thread.run(Thread.java:748)
     Caused by: java.lang.NullPointerException: Nested JAR URLs are not supported
     at sun.net.www.protocol.jar.Handler.parseURL(Handler.java:160)
     at java.net.URL.<init>(URL.java:639)
     ... 46 more
Oct 28, 2019 6:23:56 PM ERROR [ Jetty-11658] t.i2p.router.web.PluginStarter: Error resolving '/home/user/.i2p/plugins/i2pbote/console/webapps/i2pbote.war' in '/home/user/.i2p/plugins/i2pbote/console/webapps
     java.net.MalformedURLException: Nested JAR URLs are not supported
     at java.net.URL.<init>(URL.java:644)
     at java.net.URL.<init>(URL.java:507)
     at java.net.URL.<init>(URL.java:456)
     at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:166)
     at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:149)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.scanForResources(MetaInfConfiguration.java:176)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.scanJars(MetaInfConfiguration.java:133)
     at org.eclipse.jetty.webapp.MetaInfConfiguration.preConfigure(MetaInfConfiguration.java:86)
     at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:468)
     at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:504)
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
     at net.i2p.router.web.WebAppStarter.startWebApp(WebAppStarter.java:106)
     at net.i2p.router.web.PluginStarter.startPlugin(PluginStarter.java:478)
     at net.i2p.router.web.helpers.ConfigClientsHandler.startPlugin(ConfigClientsHandler.java:623)
     at net.i2p.router.web.helpers.ConfigClientsHandler.processForm(ConfigClientsHandler.java:116)
     at net.i2p.router.web.FormHandler.process(FormHandler.java:274)
     at net.i2p.router.web.FormHandler.getAllMessages(FormHandler.java:185)
     at net.i2p.router.web.jsp.configplugins_jsp._jspService(configplugins_jsp.java:510)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
     at net.i2p.servlet.filters.XSSFilter.doFilter(XSSFilter.java:30)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
     at net.i2p.router.web.LocaleWebAppHandler.handle(LocaleWebAppHandler.java:104)
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
     at org.eclipse.jetty.servlets.gzip.GzipHandler.handle(GzipHandler.java:529)
     at net.i2p.router.web.HostCheckHandler.handle(HostCheckHandler.java:118)
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
     at org.eclipse.jetty.server.Server.handle(Server.java:499)
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
     at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
     at java.lang.Thread.run(Thread.java:748)
     Caused by: java.lang.NullPointerException: Nested JAR URLs are not supported
     at sun.net.www.protocol.jar.Handler.parseURL(Handler.java:160)
     at java.net.URL.<init>(URL.java:639)
     ... 46 more

comment:7 Changed 3 weeks ago by zzz

Owner: changed from zzz to str4d
Status: newassigned

Thanks. That confirms the problem is the Tomcat jars in i2pbote.war. I don't understand the difference between the .40 and .46 Tomcat jars, or why switching to .46 in the bote build fixes it. The stack trace above is similar but not identical to the one in #2592. The real fix should be as described in #2601 - to remove those jars from the war. We can't fix it on the i2p side. Unfortunately, the bote maintainer is inactive and is ignoring trac tickets.

comment:8 Changed 2 weeks ago by Eche|on

Hi

tried the config change as noted in comment 4, but buitl bote still not contains tomcat:
AR entry WEB-INF/lib/tomcat-el-api-8.5.46.jar!/ not found in /tmp/i2p—v1r3VxQ.tmp/war-copy-i2pbote507176247/i2pbote.war
Hmm

I2P version: 0.9.43-2-1
Java version: Debian 11.0.5 (OpenJDK Runtime Environment 11.0.5+10-post-Debian-1deb10u1)
Wrapper version: 3.5.30
Server version: 9.4.15.v20190215
Servlet version: Jasper JSP 2.3 Engine
JSTL version: standard-taglib 1.2.5
Platform: Linux amd64 4.19.0-5-amd64
Processor: Kaby Lake Core i3/i5/i7 (coreibwl)
JBigI status: Locally optimized native BigInteger? library loaded from file
GMP version: 6.1.2
JBigI version: 4
JCpuId version: 3
Encoding: UTF-8
Charset: UTF-8
Built By: Undefined

And on unzip the i2pbote.war I get a list of this:

creating: WEB-INF/lib/

inflating: WEB-INF/lib/tomcat-jsp-api-8.5.46.jar
inflating: WEB-INF/lib/tomcat-servlet-api-8.5.46.jar
inflating: WEB-INF/lib/tomcat-el-api-8.5.46.jar
inflating: WEB-INF/i2pbote.tld

echelon

Last edited 2 weeks ago by Eche|on (previous) (diff)
Note: See TracTickets for help on using tickets.