Error logging into "module-info.class" log when starting Jetty server

I see this recently when I start my Java server. Has anyone else seen this? If so, what's the fix? I can confirm to the jar and the module-info.class is present in the respective paths.

 MultiException[java.lang.RuntimeException: Error scanning entry module-info.class from jar
 file:jetty/9.2.4.v20141103/tempDirectory/webapp/WEB-INF/lib/slf4j-api-1.8.0-alpha2.jar, java.lang.RuntimeException: Error scanning entry module-info.class from jar
 file:jetty/9.2.4.v20141103/tempDirectory/webapp/WEB-INF/lib/log4j-over-slf4j-1.8.0-alpha2.jar, java.lang.RuntimeException: Error scanning entry module-info.class from jar
 file:jetty/9.2.4.v20141103/tempDirectory/webapp/WEB-INF/lib/jcl-over-slf4j-1.8.0-alpha2.jar] at
 org.eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.java:535) at
 org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:446) at
 org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:473) at
 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1331) at
 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) at
 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) at
 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at
 org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41) at
 org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186) at
 org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:498) at
 org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:146) at
 org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180) at
 org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64) at 
 org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609) at 
 org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528) at
 org.eclipse.jetty.util.Scanner.scan(Scanner.java:391) at
 org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313) at
 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at
 org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150) at
 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at
 org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:560) at
 org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:235) at
 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at
 org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) at 
 org.eclipse.jetty.server.Server.start(Server.java:387) at
 org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) at
 org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) at 
 org.eclipse.jetty.server.Server.doStart(Server.java:354) at
 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at
 org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1255) at 
 java.security.AccessController.doPrivileged(Native Method)     at
 org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1174) at 
 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at
 java.lang.reflect.Method.invoke(Method.java:483) at
 org.eclipse.jetty.start.Main.invokeMain(Main.java:323) at
 org.eclipse.jetty.start.Main.start(Main.java:820) at
 org.eclipse.jetty.start.Main.main(Main.java:112)

      

+10


source to share


1 answer


module-info.class

is a Java9 feature (JPMS).

Jetty 9.4.9 (or newer) supports new JAR file changes since Java 9.

It doesn't matter which runtime JVM you are using (Oracle Java 8 or even something like OpenJDK 11.0.3), if you are using these JEP-238 Multi-Release Jar files in your WebApp (or server class loader) then you need to update Jetty version prior to Jetty 9.4.x.



This is due to the bytecode scan requirement introduced by Servlet 3.x. Jetty is required to scan all JAR files for possible servlet annotations or links that match yours . Once JEP-238 became a reality, this bytecode scanning layer had to be adapted / updated / patched to support these new JAR file structures. Jetty 9.4.9 was the first version of Jetty to support these new JAR file structures during bytecode scanning. @HandlesTypes

Java 9 Feature Issues:

+8


source







All Articles