war file with Jetty fails to boot up in Windows (broken due changes in Jetty version 9.4.32.v20200930 onward)
Closed this issue · 1 comments
System/Webapp details
- Windows
- Java 11
- Rails 6.1
- JRuby 9.2.21.0
- Warbler 2.0.5
This issue was replicated by creating a sample rails app samson.war
with jetty
9.4.32.v20200930
and 9.4.49.v20220914
Booting up the rails app fails
D:\workbench\jetties>java -Dwarbler.debug=true -jar samson.war
webroot directory is C:\Users\ORIGIN~1\AppData\Local\Temp\warbler2812041445481703119webroot\samson.war
webserver.jar extracted to C:\Users\ORIGIN~1\AppData\Local\Temp\webserver3053497811769140677.jar
2022-09-23 21:29:23.839:INFO::main: Logging initialized @388ms to org.eclipse.jetty.util.log.StdErrLog
invoking webserver with: [--host, 0.0.0.0, --port, 8080, --config, jar:file:/D:/workbench/jetties/samson.war!/WEB-INF/webserver.xml, /D:/workbench/jetties/samson.war]
WARNING: jetty-runner is deprecated.
See Jetty Documentation for startup options
https://www.eclipse.org/jetty/documentation/
2022-09-23 21:29:23.855:INFO:oejr.Runner:main: Runner
java.nio.file.InvalidPathException: Illegal char <:> at index 2: /D:/workbench/jetties/samson.war
at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229)
at java.base/java.nio.file.Path.of(Path.java:147)
at java.base/java.nio.file.Paths.get(Paths.java:69)
at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:179)
at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:152)
at org.eclipse.jetty.runner.Runner.configure(Runner.java:420)
at org.eclipse.jetty.runner.Runner.main(Runner.java:563)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at WarMain.launchWebServer(WarMain.java:187)
at WarMain.start(WarMain.java:345)
at JarMain.doStart(JarMain.java:233)
at WarMain.main(WarMain.java:367)
Usage: java [-Djetty.home=dir] -jar jetty-runner.jar [--help|--version] [ server opts] [[ context opts] context ...]
After digging more the issue can be replicated by using the Jetty runner directly:
The app boots up properly with Jetty 9.4.31.v20200723
(expected behaviour):
D:\workbench\jetties>java -jar jetty-runner-9.4.31.v20200723.jar /D:/workbench/jetties/samson.war
2022-09-23 22:43:00.761:INFO::main: Logging initialized @199ms to org.eclipse.jetty.util.log.StdErrLog
WARNING: jetty-runner is deprecated.
See Jetty Documentation for startup options
https://www.eclipse.org/jetty/documentation/
2022-09-23 22:43:00.777:INFO:oejr.Runner:main: Runner
2022-09-23 22:43:00.886:INFO:oejs.Server:main: jetty-9.4.31.v20200723; built: 2020-07-23T17:57:36.812Z; git: 450ba27947e13e66baa8cd1ce7e85a4461cacc1d; jvm 11.0.10+9-LTS
2022-09-23 22:43:05.659:WARN:oeja.AnnotationParser:main: Unrecognized ASM version, assuming ASM7
2022-09-23 22:43:06.519:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=851ms
2022-09-23 22:43:08.328:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
2022-09-23 22:43:08.328:INFO:oejs.session:main: No SessionScavenger set, using defaults
2022-09-23 22:43:08.328:INFO:oejs.session:main: node0 Scavenging every 660000ms
2022-09-23 22:43:08.511:INFO:oejshC.ROOT:main: INFO: jruby 9.2.21.0 (2.5.8) 2022-06-27 49e5080a7c OpenJDK 64-Bit Server VM 11.0.10+9-LTS on 11.0.10+9-LTS +jit [mswin32-x86_64]
2022-09-23 22:43:08.527:INFO:oejshC.ROOT:main: INFO: using a shared (threadsafe!) runtime
2022-09-23 22:43:27.331:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@f4168b8{/,file:///C:/Users/Origination/AppData/Local/Temp/jetty-0_0_0_0-8080-samson_war-_-any-2598341243990491270.dir/webapp/,AVAILABLE}{file:///D:/workbench/jetties/samson.war}
2022-09-23 22:43:27.370:INFO:oejs.AbstractConnector:main: Started ServerConnector@1fc2b765{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2022-09-23 22:43:27.370:INFO:oejs.Server:main: Started @26802ms
The app fails to boot up with Jetty 9.4.31.v20200723
(expected behaviour):
D:\workbench\jetties>
D:\workbench\jetties>java -jar jetty-runner-9.4.49.v20220914.jar /D:/workbench/jetties/samson.war
2022-09-23 22:44:42.156:INFO::main: Logging initialized @194ms to org.eclipse.jetty.util.log.StdErrLog
WARNING: jetty-runner is deprecated.
See Jetty Documentation for startup options
https://www.eclipse.org/jetty/documentation/
2022-09-23 22:44:42.156:INFO:oejr.Runner:main: Runner
java.nio.file.InvalidPathException: Illegal char <:> at index 2: /D:/workbench/jetties/samson.war
at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229)
at java.base/java.nio.file.Path.of(Path.java:147)
at java.base/java.nio.file.Paths.get(Paths.java:69)
at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:179)
at org.eclipse.jetty.util.resource.Resource.newResource(Resource.java:152)
at org.eclipse.jetty.runner.Runner.configure(Runner.java:420)
at org.eclipse.jetty.runner.Runner.main(Runner.java:563)
Digging in the Jetty repository, it seems the change of behaviour was introduced by this changes jetty/jetty.project#5131. Browsing the comments it clearly that pull request caused the breakage jetty/jetty.project#5131 (comment).
As per @gregw in this comment states the previous behaviour is a bug
jetty/jetty.project#5871 (comment)
As a side note the Jetty Runner is not deprecated as per @gregw
Hi @olleolleolle,
I created a pull request to resolve this issue #527
Hope is all good, also no sure if I have to add in the commit the generated jar file lib/warbler_jar.jar