J'ai une instance Tomcat en cours d'exécution;
J'ai un projet de travail Netbeans 8.2 compilé sur la bibliothèque JDK1.8. Celui-ci construit, se déploie et s'exécute correctement sur le serveur susmentionné.
J'essaye maintenant de passer à Netbeans 9, donc j'ai un programme tournant sur le JDK OpenJDK 10.0.2. Si je construis le même projet (toujours sur la bibliothèque JDK1.8), il se construit et se déploie correctement. Cependant, quand il fonctionne sur le même serveur, l'erreur suivante apparaît.
javax.servlet.ServletException: Error instantiating servlet class [xxxx.xxx.xxx.TestServlet]
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:491)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:92)
org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:668)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:343)
org.Apache.coyote.http11.Http11Processor.service(Http11Processor.Java:408)
org.Apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.Java:66)
org.Apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.Java:764)
org.Apache.Tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.Java:1388)
org.Apache.Tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.Java:49)
Java.base/Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1135)
Java.base/Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:635)
org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
Java.base/Java.lang.Thread.run(Thread.Java:844)
Root Cause
Java.lang.RuntimeException:
xxxx.xxx.xxx.TestServlet.<init>(TestServlet.Java:1)
Java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
Java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
Java.base/Java.lang.reflect.Constructor.newInstance(Constructor.Java:488)
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:491)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:92)
org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:668)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:343)
org.Apache.coyote.http11.Http11Processor.service(Http11Processor.Java:408)
org.Apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.Java:66)
org.Apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.Java:764)
org.Apache.Tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.Java:1388)
org.Apache.Tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.Java:49)
Java.base/Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1135)
Java.base/Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:635)
org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
Java.base/Java.lang.Thread.run(Thread.Java:844)
Note The full stack trace of the root cause is available in the server logs.
(xxxx.xxx.xxx.TestServlet remplacé pour la vraie classe Servlet)
Il se plaint de la première ligne du Servlet qui est en fait le "/ *" du commentaire de modèle de toute façon.
J'aurais pensé que, quel que soit le type de Netbeans que j'utilisais, si les deux étaient à nouveau compilés, le même JDK JDK1.8, les deux WAR déployés devraient être identiques et fonctionneraient tous les deux. Netbeans 9 semble construire quelque chose de différent et l'erreur signalée n'est pas d'une grande aide.
Des indices?
Tout d’abord, notez que Netbeans 9.0 RC1 ne prend en charge que le développement Java SE } ...
La version 9.0, qui sera an IDE pour le développement Java SE uniquement, le fichier d'autres fonctionnalités n'ont pas encore été données par Oracle et sont en cours audité et traité et faire partie des versions ultérieures d’Apache NetBeans.
Cela dit, les versions bêta précédentes d’Apache NetBeans 9 fournissaient des plug-ins permettant la création d’applications Java EE, ainsi que cette fonctionnalité serait réintroduite à la sortie de NetBeans 9.0 }: _
Oracle a audité et fait don de tous les modules pour les fonctionnalités fournissant prise en charge de JavaScript, PHP, Groovy et Java d'entreprise (c'est-à-dire Java EE ou, comme on l'appelle maintenant, Jakarta EE). Ces fonctionnalités sont sur un branche distincte dans le référentiel Apache NetBeans Git. Ils seront intégré, c’est-à-dire lié à Apache, après Apache NetBeans (incubation) 9.0 est publié.
Vous n’avez pas spécifié la version de NetBeans 9 que vous utilisez (il y en a eu beaucoup au cours des derniers mois), mais si vous téléchargez NetBeans 9.0 RC1 , il ne fournit pas d’assistant pour créer Java Web. applications, il n'est pas possible d'ajouter un serveur d'application tel que Tomcat ou Wildfly, aucun plugin approprié n'est offert. On peut donc supposer que tout ce qui est en dehors de Java SE, tel que le déploiement d'applications Web, n'est pas officiellement pris en charge.
Toutefois, vous pouvez toujours ajouter manuellement des plug-ins (à vos risques et périls) pour activer la fonctionnalité Java EE dans Apache NetBeans 9.0:
Après cela, la fonctionnalité Java EE doit être correctement activée. Alors pouvez-vous ajouter cette fonctionnalité, puis réessayer votre déploiement et conseiller?
Cela fonctionne également dans Netbeans 10 et vous permet d’installer les plugins Payara (Payara, Payara Micro) qui sont bien supérieurs à Tomcat IMHO.