Как заставить 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, кажется, строит что-то другое, и сообщаемая ошибка не очень помогает.

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

1 ответ

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

Выпуск 9.0, который будет 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, и его невозможно добавить. сервер приложений, такой как Tomcat или Wildfly, и не предлагаются никакие подходящие плагины. Поэтому, по-видимому, все, что выходит за рамки Java SE, например развертывание веб-приложений, формально не поддерживается.

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

  • Сервис> Плагины> вкладка Настройки > нажмите кнопку Добавить
  • На экране Центра настройки обновлений введите какое-либо значение в поле Имя (например, "Мои плагины"), http://updates.netbeans.org/netbeans/updates/8.2/uc/final/distribution/catalog.xml.gz в Поле URL и нажмите ОК.
  • Это должно создать новую запись в списке " Конфигурация центров обновлений" на вкладке " Настройки ".
  • Проверка, что новая запись должна мгновенно добавить плагины на вкладку Доступные плагины. В моем случае добавлено 43 записи.
  • Перейдите на вкладку " Доступные плагины ", затем щелкните столбец " Категория", чтобы отсортировать записи по категориям.
  • Проверьте все записи для категории Java Web и EE, а затем нажмите кнопку Установить.
  • Плагины будут загружены и установлены. Чтобы подтвердить это, перейдите на вкладку Установлено. Вы должны увидеть только что добавленные плагины, такие как Java EE Base и RESTful Web Services.

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

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

Другие вопросы по тегам