it-swarm.com.ru

Как заставить Netbeans 9 развернуть действующее веб-приложение на Tomcat

У меня работает работающий экземпляр Tomcat;

  • Tomcat 9.0.10
  • OpenJDK 10.0.2

У меня есть работающий проект Netbeans 8.2, скомпилированный в библиотеке JDK1.8. Он прекрасно собирается и разворачивается на вышеуказанном сервере.

Сейчас я пытаюсь перейти на Netbeans 9, так что у меня есть, что работает на JDK OpenJDK 10.0.2. Если я создаю тот же проект (все еще в библиотеке JDK1.8), он прекрасно собирается и развертывается. Однако, когда он работает на том же сервере, я получаю следующую ошибку;

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 заменен на настоящий класс сервлетов)

Он жалуется на первую строку сервлета, которая в любом случае является «/ *» комментария шаблона.

Я бы подумал, что когда бы я ни использовал NetBeans, если бы оба были скомпилированы снова с тем же JDK JDK1.8, оба развернутых WAR-файла должны быть одинаковыми и оба работать. Netbeans 9, кажется, строит что-то другое, и сообщаемая ошибка не очень помогает.

Есть какие-нибудь подсказки?

3
user1667016

Во-первых, обратите внимание, что Netbeans 9.0 RC1 поддерживает только разработку Java SE ...

Выпуск 9.0, который будет a IDE только для разработки Java SE, другие функции еще не предоставлены Oracle и в настоящее время проверяется и обрабатывается и будет частью последующих выпусков Apache NetBeans.

Тем не менее, в более ранних бета-версиях Apache NetBeans 9 были предусмотрены плагины, позволяющие создавать приложения Java EE, и эта функциональность будет вновь введена после выпуска NetBeans 9.0 :

Oracle провела аудит и пожертвовала все модули для обеспечения функций поддержка JavaScript, PHP, Groovy и корпоративной Java (то есть Java EE или, как сейчас известно, Jakarta EE). Эти функции есть на отдельная ветка в репозитории Apache NetBeans Git. Они будут интегрированный, то есть повторно лицензированный для Apache, после Apache NetBeans (инкубация) 9.0 выпущен.

Вы не указали, какую версию NetBeans 9 вы используете (их было много за последние несколько месяцев), но если вы загружаете NetBeans 9.0 RC1 он не предоставляет мастера для создания Java Web приложения, а также невозможно добавить сервер приложений, такой как Tomcat или Wildfly, и не предлагаются никакие подходящие плагины. Поэтому, по-видимому, все, что выходит за рамки Java SE, например развертывание веб-приложений, формально не поддерживается.

Однако вы все равно можете вручную добавить плагины (на свой страх и риск), чтобы включить функциональность Java EE в Apache NetBeans 9.0:

  • Инструменты> Плагины> Настройки вкладка > нажмите кнопку Добавить
  • На экране Update Center Customizer введите значение в поле Name (например, «Мои плагины»), http://updates.netbeans.org/netbeans/updates /8.2/uc/final/distribution/catalog.xml.gz в поле URL и нажмите OK.
  • Это должно создать новую запись в списке Configuration Center Update на вкладке Settings
  • Проверка того, что новая запись должна мгновенно добавить плагины на вкладку Available Plugins. В моем случае добавлено 43 записи. 
  • Перейдите на вкладку Available Plugins, затем щелкните столбец Category, чтобы отсортировать записи по категориям.
  • Проверьте все записи для категории Java Web и EE, а затем нажмите кнопку Install
  • Плагины будут загружены и установлены. Чтобы подтвердить это, перейдите на вкладку Installed. Вы должны увидеть только что добавленные плагины, такие как Java EE Base и RESTful Web Services

После этого у вас должна быть правильно включена функциональность Java EE. Можете ли вы добавить эту функцию, а затем повторить попытку развертывания и дать совет?

10
skomisa

Это также работает в Netbeans 10 и позволяет устанавливать плагины Payara (Payara, Payara Micro), которые намного превосходят IMHO Tomcat.

0
andrew glynn