当前位置: 首页 > 知识库问答 >
问题:

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

白晋鹏
2023-03-14

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

  • Tomcat 9.0.10
  • OpenJDK 10.0.2

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

我现在正尝试迁移到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.

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

它抱怨Servlet的第一行实际上是模板注释的“/*”。

如果两个Netbeans再次被编译为同一个JDK1,我会认为我使用的是哪一个Netbeans。8 JDK,两个部署的WAR应该是相同的,并且都可以工作。Netbeans 9似乎正在构建一些不同的东西,报告的错误并没有太大帮助。

有什么线索吗?

共有2个答案

祁景山
2023-03-14

这也适用于Netbeans 10,并允许您安装Payara插件(Payara,Payara Micro),这些插件远远优于Tomcat IMHO。

申高卓
2023-03-14

首先,请注意Netbean 9.0 RC1只支持JavaSE开发...

9.0版将是一个仅用于JavaSE开发的集成开发环境,其他功能尚未由甲骨文捐赠,正在进行审计和处理,并成为Apache NetBeans后续版本的一部分。

尽管如此,Apache NetBeans 9的早期beta版提供了允许构建Java EE应用程序的插件,一旦NetBeans 9.0发布,该功能将重新引入:

Oracle已经审核并捐赠了所有支持JavaScript、PHP、Groovy和enterprise Java(即Java EE或雅加达EE)的功能模块。这些特性位于Apache NetBeans Git repo中的一个单独分支上。在ApacheNetbeans(孵化)9.0发布后,它们将被集成,即重新授权给Apache。

您没有指定正在使用哪个版本的NetBeans 9(过去几个月已经有很多版本),但如果您下载NetBeans 9.0 RC1,它不提供创建Java Web应用程序的向导,也不可能添加Tomcat或Wildfly等应用服务器,也不提供任何合适的插件。因此,Java SE范围之外的任何东西,比如web应用程序的部署,都不受正式支持。

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

  • 工具

之后,您应该正确启用JavaEE功能。那么,您能否添加该功能,然后重试部署并提供建议?

 类似资料:
  • 在Ubuntu 16.04上,我使用以下命令停止tomcat7服务器: 然后我创建了一个war文件,如下所示: 我将war文件复制到webapps目录: 我使用命令:sudo service tomcat7 start调出tomcat 这样,下面的url显示服务器正在工作: 据我所知,下面的URL应该转到. war文件localhost:8080/test 它不起作用。(404错误)我做错了什么?

  • 我试图在保存Netbeans 8.0.2中部署一个示例Wicket项目,生成pom.xml,如下所示:http://Wicket.apache.org/start/quickstart.html。我已经将Tomcat添加到服务器中,并添加了一个管理用户和密码(当然选中了tomcat-users.xml)。当我“运行”项目时,Tomcat启动,但项目没有部署。“Run”输出显示 那么,是否可以在ne

  • 我正在升级运行在Tomcat 8上的Web应用程序的log4j版本。我正在从1.2.12版本升级到最新的2.11.1。 应用程序正在使用Maven。因此,我向我的应用程序(版本在父pom中管理): 我删除了旧的配置文件,并将其替换为文件夹中的一个新的文件(在我的log4j2文件内容下面找到)。 当我直接运行函数时,日志会正确地写入控制台和文件中。但是,当我在Tomcat上部署应用程序并运行它时,没

  • 我有一个带有grails的web应用程序,我想使用.war文件在cPanel中部署这个web应用程序。我遵循这个指南,首先我创建了数据库,然后在我的应用程序数据源上添加了数据库信息,制作了war文件并在cPanel上上传了PUBLIC_HTML文件上的war,将war文件重命名为zip文件并解压缩。我检查了url(sampleDomain.com/myApp),但它显示如下错误: 我不知道如何部署

  • 我阅读并关注了BallusC的以下帖子,但仍然困惑:如何在Tomcat上安装和使用CDI? 尝试安装焊缝2.2.9.最终和配置如上所述。我正在使用以下内容: JSF 2.2、EL 2.2、Servlet3、Java7 还有什么可能导致这个错误?

  • 我在为Tomcat服务器部署Spring guides中提供的Spring Boot+WebSocket+Stomp教程时遇到了一些麻烦 我正在使用gradle创建战争,其中我有以下依赖 基本上,我只添加了spring-boot-starter-tomcat依赖项以及war和idea插件。 代码可以在https://spring.io/guides/gs/messaging-stomp-webso