Intellij-IDEA 可以在 tomcat 中启动和调试 jersey 应用程序,但将 war 部署到 tomcat 得到 404

Intellij-IDEA can start and debug jersey apps in tomcat, but deploy the war to tomcat got 404

我有一个球衣网络应用程序,使用 IntelliJ IDEA 作为 IDE。我使用 maven (pom.xml) 作为项目管理器工具----用于依赖库管理器。

我使用这个调试配置:

服务器 -> 应用程序服务器:Tomcat 9.0.24 URL : http://localhost:8080/

部署 -> :war 展开 应用上下文:/

然后当我按下调试按钮时,项目编译,工件部署,浏览器打开欢迎页面(这是静态页面)。

我用postman发送GET或者POST或者PUT请求,给出正确的响应。

当我 Build/Artifacts... 时,IntelliJ IDEA 创建了 .war 文件。

我将 war 文件放入远程 Tomcat 容器 webapps 文件夹 ---- 与本地主机相同 ---- 使用 ROOT.war 名称。

tomcat catalina.out 文件有这条消息:

20-Aug-2019 11:41:06.528 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] 20-Aug-2019 11:41:06.546 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"] 20-Aug-2019 11:41:06.551 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [393] milliseconds 20-Aug-2019 11:41:06.587 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 20-Aug-2019 11:41:06.587 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.24] 20-Aug-2019 11:41:06.603 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/root/apache-tomcat-9.0.24/webapps/ROOT.war] 20-Aug-2019 11:41:08.434 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 20-Aug-2019 11:41:08.469 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/root/apache-tomcat-9.0.24/webapps/ROOT.war] has finished in [1,867] ms

我用邮递员发送相同的请求,得到 404 错误。使用postman访问静态页面,没问题

我google有些事,但不适合我的场景。这里不是 tomcat 应用程序上下文正确,不是 war 文件不正确。

我的项目不是 web.xml 文件。但我附加了 web.xml,不是运气。

我将 tomcat7-maven-plugin 附加到 pom.xml 文件。没有效果。

将 org.glassfish.jersey.bundles jaxrs-ri 库附加到 pom.xml。一样。

@ApplicationPath("/api")
public class RestApplication extends ResourceConfig {

我使用 JAX-RS 的这个应用程序。 所以我访问 http://host-name:8080/api/...,tomcat 给我找不到。

我查了tomcat访问日志(localhost_access_log.2019-MM-DD.txt),给我这个信息:

114.249.235.124 - - [20/Aug/2019:11:53:12 +0800] "GET /api/subjects HTTP/1.1" 404 1047

why IntelliJ IDEA startup tomcat 部署项目没问题,我用IntelliJ IDEA build war 文件放到tomcat webapps/ROOT.war 不起作用?

请问问题出在哪里?

是的,问题已解决。 Java 版本不同造成。我机器上的Java是高版本,但是Server上的Java版本比较低