我有一个正在运行的Tomcat实例;
我有一个在Library JDK1.8上编译的可运行的Netbeans 8.2项目,它可以在上述服务器上正常构建,部署和运行。
我现在正尝试迁移到Netbeans 9,因此我在OpenJDK 10.0.2 JDK上运行了该版本。如果我构建相同的项目(仍在Library 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替换为真正的Servlet类)
它抱怨Servlet的第一行,实际上还是模板注释的“ /*”。
我会认为,如果使用相同的JDK1.8 JDK再次编译两个Netbeans,那么部署的WAR应该相同并且都可以工作。 Netbeans 9似乎在构建一些不同的东西,并且所报告的错误并没有太大帮助。
有任何线索吗?
答案 0 :(得分:10)
首先,请注意Netbeans 9.0 RC1 only supports Java SE development ...
第9.0版,它将仅用于Java SE开发的IDE , Oracle还没有捐赠其他功能,这些功能正在 经过审核和处理,并成为后续Apache版本的一部分 NetBeans。
也就是说,Apache NetBeans 9的早期测试版提供了用于构建Java EE应用程序的插件,并且that functionality will be reintroduced once NetBeans 9.0 is released:
Oracle已审核并捐赠了用于提供功能的所有模块 支持JavaScript,PHP,Groovy和企业Java(即Java EE或Jakarta EE)。这些功能位于 Apache NetBeans Git存储库中的单独分支。他们会 集成,即在Apache NetBeans之后再许可给Apache (正在孵化)9.0发行了。
您没有指定要使用的NetBeans 9版本(过去几个月来有很多版本),但是如果您download NetBeans 9.0 RC1并没有提供创建 Java Web < / strong>应用程序,也无法添加应用程序服务器(例如Tomcat或Wildfly),也没有提供任何合适的插件。因此,大概不正式支持Java SE范围之外的任何内容,例如Web应用程序的部署。
但是,您仍然可以手动添加插件(后果自负),以在Apache NetBeans 9.0中启用Java EE功能:
此后,您应该正确启用Java EE功能。那么您可以添加该功能,然后重试部署并提出建议吗?
答案 1 :(得分:0)
这在Netbeans 10中也有效,并且允许您安装比Tomcat IMHO更好的Payara插件(Payara,Payara Micro)。