如何让Netbeans 9在Tomcat上部署有效的webapp [英] How to get Netbeans 9 to deploy a valid webapp on Tomcat

查看:267
本文介绍了如何让Netbeans 9在Tomcat上部署有效的webapp的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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




  • Tomcat 9.0.10

  • OpenJDK 10.0 .2



我在库JDK1.8上编译了一个工作的Netbeans 8.2项目,这在上面的服务器上构建和部署并运行。



我现在正试图转向Netbeans 9,所以我在OpenJDK 10.0.2 JDK上运行了。如果我构建相同的项目(仍然在库JDK1.8上),它构建和部署正常。但是,当它在同一台服务器上运行时,我收到以下错误;

  javax.servlet.ServletException:实例化servlet类时出错[ 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.ja va: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)
根本原因

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:4 91)
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。运行(TAS kThread.java:61)
java.base / java.lang.Thread.run(Thread.java:844)
注意服务器日志中提供了根本原因的完整堆栈跟踪。

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



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



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



任何线索?

Netbeans 9.0 RC1仅支持Java SE开发 ...


9.0版本,它将是 Java的IDE仅限SE开发
其他功能尚未由Oracle 捐赠,并且正在审计和处理
,并成为Apache $ b $的后续版本的一部分b NetBeans。


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



< blockquote>

Oracle已经审计并捐赠了所有模块,以便为JavaScript,PHP,Groovy和企业Java提供
支持(即,Java
EE或者,因为它已知现在,雅加达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功能:




  • 工具>插件>设置标签 > 点击添加按钮

  • 更新中心自定义程序屏幕上,在名称<中输入一些值/ strong>字段(例如我的插件),网址字段中的gzrel =noreferrer> http://updates.netbeans.org/netbeans/updates/8.2/uc/final/distribution/catalog.xml.gz ,然后点击确定

  • 这应该在设置<的配置更新中心列表中创建一个新条目/ strong>标签。

  • 检查新条目是否应立即将插件添加到可用插件标签中。在我的情况下,它添加了43个条目。

  • 点击可用插件标签,然后点击类别列,按类别对条目进行排序。

  • 检查 Java Web和EE 类别的所有条目,然后单击安装按钮。

  • 将下载并安装插件。要确认,请点击已安装标签。您应该看到刚刚添加的插件,例如 Java EE Base RESTful Web服务



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


I have a working Tomcat instance running;

  • Tomcat 9.0.10
  • OpenJDK 10.0.2

I have a working Netbeans 8.2 project compiled on Library JDK1.8, This builds and deploys and runs on the above server fine.

I am now trying to move to Netbeans 9, so I have a that running on the OpenJDK 10.0.2 JDK. If I build the same project (still on Library JDK1.8), it builds and deploys fine. However, when it runs on the same server I get the following error;

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 replaced for real Servlet class)

It complaints about the first line of the Servlet which is actaully the "/*" of the template comment anyway.

I would have thought that which ever Netbeans I was using, if both were compiled again the same JDK1.8 JDK, both deployed WAR should be the same and both work. Netbeans 9 seems to be building something different and the error reported is not really much help.

Any clues?

解决方案

First, note that Netbeans 9.0 RC1 only supports Java SE development...

Release 9.0, which will be an IDE for Java SE development only, the other features have not been donated yet by Oracle and are being audited and processed and be part of subsequent releases of Apache NetBeans.

That said, earlier beta releases of Apache NetBeans 9 provided plugins to allow Java EE applications to be built, and that functionality will be reintroduced once NetBeans 9.0 is released:

Oracle has audited and donated all the modules for features providing support for JavaScript, PHP, Groovy, and enterprise Java (i.e., Java EE or, as it is known now, Jakarta EE). These features are on a separate branch in the Apache NetBeans Git repo. They will be integrated, i.e., relicensed to Apache, after Apache NetBeans (incubating) 9.0 is released.

You didn't specify which version of NetBeans 9 you are using (there have been many in the past few months), but if you download NetBeans 9.0 RC1 it does not provide a wizard to create Java Web applications, nor is it possible to add an application server such as Tomcat or Wildfly, nor are any suitable plugins offered. So presumably anything outside the scope of Java SE, such as the deployment of web applications, is not formally supported.

However, you can still manually add plugins (at your own risk) to enable Java EE functionality in Apache NetBeans 9.0:

  • Tools > Plugins > Settings tab > click the Add button
  • On the Update Center Customizer screen enter some value in the Name field (e.g. "My plugins"), http://updates.netbeans.org/netbeans/updates/8.2/uc/final/distribution/catalog.xml.gz in the URL field, and click OK.
  • This should create a new entry in the Configuration of Update Centers list in the Settings tab.
  • Checking that new entry should instantly add plugins to the Available Plugins tab. In my case it added 43 entries.
  • Click the Available Plugins tab, then click the Category column to sort the entries by category.
  • Check all the entries for category Java Web and EE, and then click the Install button.
  • The plugins will be downloaded and installed. To confirm that, click the Installed tab. You should see the plugins you just added, such as Java EE Base and RESTful Web Services.

After that you should have Java EE functionality properly enabled. So can you add that functionality and then retry your deployment and advise?

这篇关于如何让Netbeans 9在Tomcat上部署有效的webapp的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆