web-dev-qa-db-fra.com

Comment obtenir que Netbeans 9 déploie une application Web valide sur Tomcat

J'ai une instance Tomcat en cours d'exécution;

  • Tomcat 9.0.10
  • OpenJDK 10.0.2

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?

3
user1667016

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:

  • Outils> Plug-ins> Paramètres onglet > cliquez sur le bouton Ajouter
  • Sur l'écran Update Center Customizer, entrez une valeur dans le champ Name (par exemple, "Mes plugins"), http://updates.netbeans.org/netbeans/updates/ 8.2/uc/final/distribution/catalog.xml.gz dans le champ URL, puis cliquez sur OK.
  • Cela devrait créer une nouvelle entrée dans la liste Configuration des centres de mise à jour de l'onglet Paramètres
  • En vérifiant cette nouvelle entrée, vous ajoutez instantanément des plug-ins à l'onglet Plugins disponibles. Dans mon cas, il a ajouté 43 entrées. 
  • Cliquez sur l'onglet Plugins disponibles, puis sur la colonne Catégorie pour trier les entrées par catégorie.
  • Vérifiez toutes les entrées pour la catégorie Java Web et EE, puis cliquez sur le bouton Installer
  • Les plugins seront téléchargés et installés. Pour confirmer cela, cliquez sur l'onglet Installed. Vous devriez voir les plugins que vous venez d'ajouter, tels que Java EE Base et RESTful Web Services

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?

10
skomisa

Cela fonctionne également dans Netbeans 10 et vous permet d’installer les plugins Payara (Payara, Payara Micro) qui sont bien supérieurs à Tomcat IMHO.

0
andrew glynn