如何让Netbeans 9在Tomcat上部署有效的webapp

use*_*016 3 java tomcat netbeans netbeans-9

我有一个正在运行的Tomcat实例;

  • Tomcat 9.0.10
  • OpenJDK 10.0.2

我有一个在Library JDK1.8上编译的工作Netbeans 8.2项目,它可以在上面的服务器上构建和部署并运行.

我现在正试图转向Netbeans 9,所以我在OpenJDK 10.0.2 JDK上运行.如果我构建相同的项目(仍在库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.
Run Code Online (Sandbox Code Playgroud)

(xxxx.xxx.xxx.TestServlet替换为真正的Servlet类)

它抱怨Servlet的第一行,无论如何都是模板评论的"/*".

我本以为我曾经使用的Netbeans,如果两者都被重新编译了相同的JDK1.8 JDK,那么部署的WAR应该是相同的并且都可以工作.Netbeans 9似乎正在构建不同的东西,报告的错误并没有多大帮助.

有线索吗?

sko*_*isa 10

首先,请注意Netbeans 9.0 RC1仅支持Java SE开发 ......

9.0版本,这将是对Java SE开发的IDE只,在 其他功能尚未由Oracle捐赠和被审查和处理,是阿帕奇的NetBeans的后续版本的一部分.

也就是说,Apache NetBeans 9的早期beta版本提供了允许构建Java EE应用程序的插件,并且在NetBeans 9.0发布后将重新引入该功能:

Oracle已经审核并捐赠了所有模块,以提供对JavaScript,PHP,Groovy和企业Java(即Java EE或现在已知的Jakarta EE)的支持的功能.这些功能位于Apache NetBeans Git仓库的单独分支上.Apache NetBeans(孵化)9.0发布后,它们将被集成,即重新许可给Apache.

您没有指定使用的是哪个版本的NetBeans 9(过去几个月有很多版本),但如果您下载NetBeans 9.0 RC1,则它不提供创建Java Web应用程序的向导,也不能添加一个应用程序服务器,如Tomcat或Wildfly,也没有提供任何合适的插件.因此,大概不支持Java SE范围之外的任何内容,例如Web应用程序的部署.

但是,您仍然可以手动添加插件(风险自负)以在Apache NetBeans 9.0中启用Java EE功能:

  • 工具>插件>设置选项卡>单击添加按钮
  • 更新中心定制屏幕上输入的某些值名称字段(如"我的插件"),http://updates.netbeans.org/netbeans/updates/8.2/uc/final/distribution/catalog.xml.gzURL字段,然后单击" 确定".
  • 这应该在" 设置"选项卡的" 更新中心配置"列表中创建一个新条目.
  • 检查新条目是否应立即将插件添加到" 可用插件"选项卡.在我的情况下,它添加了43个条目.
  • 单击" 可用插件"选项卡,然后单击" 类别"列以按类别对条目进行排序.
  • 检查Java Web和EE类别的所有条目,然后单击" 安装"按钮.
  • 将下载并安装插件.要确认,请单击" 已安装"选项卡.您应该看到刚刚添加的插件,例如Java EE BaseRESTful Web Services.

之后,您应该正确启用Java EE功能.那么您可以添加该功能,然后重试您的部署并提出建议吗?