web-dev-qa-db-fra.com

Erreur lors de l'analyse de l'entrée "module-info.class" lors du démarrage du serveur Jetty

Je le vois récemment lorsque je démarre mon Java. Est-ce que quelqu'un d'autre l'a vu? Si oui, quel est le correctif? Je peux confirmer que le pot et le module-info.class sont présents dans le chemins pertinents.

 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)
17
Praveen Kumar

module-info.class est une fonctionnalité Java9 (JPMS).

Jetty 9.4.9 (ou plus récent) prend en charge les nouvelles modifications du fichier JAR de Java 9.

Peu importe la JVM d'exécution que vous utilisez (Oracle Java 8, ou même quelque chose comme OpenJDK 11.0.3), si vous utilisez ces JEP-238 Multi-Release Jar files dans votre WebApp (ou chargeur de classe de serveur), vous devez alors mettre à niveau votre version Jetty vers Jetty 9.4.x.

Cela est dû à l'exigence d'analyse de bytecode introduite par Servlet 3.x. Jetty est nécessaire pour analyser tous les fichiers JAR pour les annotations ou références de servlet qui correspondent à votre application Web définie @HandlesTypes . Une fois que JEP-238 est devenu réalité, cette couche de numérisation de bytecode a dû être adaptée/mise à jour/corrigée pour prendre en charge ces nouvelles structures de fichiers JAR. Jetty 9.4.9 était la première version de Jetty à prendre en charge ces nouvelles structures de fichiers JAR lors de l'analyse de bytecode.

Problèmes concernant Java 9 fonctionnalités:

17
Joakim Erdfelt