Как заставить 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.