2017-08-21 4 views
3

En essayant de Run Vaadin 8.1 app under Java 9 prerelease in IntelliJ 2017.2.2 j'ai été en mesure de construire un vaadinjavanine.war en utilisant un fresh project et d'héberger la même chose en utilisant Jetty Server. J'ai fini par essayer de déployer la guerre générée sur un serveur Tomcat. Mais, lors du démarrage du serveur tomcat, je reçois l'exception suivante:Impossible de traiter le fichier module-info.class dans un projet Java9 entraîne ClassFormatException

21-Aug-2017 22:53:38.830 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processAnnotationsFile Unable to process file [/Library/Tomcat/apache-tomcat-8.0.22/webapps/vaadinjavanine/WEB-INF/classes/module-info.class] for annotations 
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97) 
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:177) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2011) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:1994) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:1988) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1939) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1897) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1149) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5066) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

21-Aug-2017 22:53:38.980 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/vaadinjavanine]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.UnsupportedClassVersionError: nullpointer/MyUI$MyUIServlet has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class nullpointer.MyUI$MyUIServlet) 
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2476) 
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157) 
    at org.atmosphere.util.IOUtils.isAtmosphere(IOUtils.java:381) 
    at org.atmosphere.cpr.ContainerInitializer.onStartup(ContainerInitializer.java:58) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5156) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 10 more 

21-Aug-2017 22:53:38.981 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive /Library/Tomcat/apache-tomcat-8.0.22/webapps/vaadinjavanine.war 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/vaadinjavanine]] 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:728) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

L'exception déclare incapable de traiter la module-info.class, qui est généré à partir de Java9 module-info.java. Existe-t-il un moyen de résoudre ce problème? Ou est-ce que cela signifie que tomcat n'est pas encore prêt pour les modules java9?

Remarque: Être novice à Tomcat, je ne mesure aucun des paramètres. Faites-moi savoir, si quelque chose d'autre peut être partagé pour plus d'informations.

Répondre

2

Je ne suis pas un expert Tomcat, mais il semble que le descripteur de module ne soit pas le problème le plus grave. L'exception NextEd contient ce bloc:

causés par: java.lang.UnsupportedClassVersionError: nullpointer/MyUI$MyUIServlet a été compilé par une version plus récente de Java Runtime (classe version de fichier 53,0), cette version de Java Runtime ne reconnaît que les versions de fichiers de classe up à 52,0 (incapable de charger la classe nullpointer.MyUI$MyUIServlet)

Cela fait ressembler à vous utilisez Tomcat Java 8 (classe version de fichier 52), alors que votre code est compilé avec Java 9 (classe version de fichier 53). Assurez-vous d'exécuter Tomcat sur Java 9. En outre, vous pouvez essayer un early access build of Tomcat 9, qui est requis pour la compatibilité Java 9.

+0

Fait sens. J'ai essayé d'exécuter 'apache-tomcat-9.0.0.M26' avec' jdk-9 + 181' et il a été corrigé. – nullpointer