首页 > 解决方案 > 无法使 JAR/WAR 可执行文件与嵌入式 Tomcat 7 一起工作

问题描述

我有一个使用tomcat7-maven-plugin. 我正在尝试将项目打包到一个 jar(或 war)中,以便它可以在不使用 maven(mvn tomcat7:run)的情况下运行。到目前为止,我的尝试并没有正确显示网页。

我已按照https://www.baeldung.com/executable-jar-with-maven(2.6:带有可执行 Tomcat 的 Web 应用程序)中的步骤进行操作。此外,还遵循了https://searchapparchitecture.techtarget.com/video/Create-a-Java-executable-JAR-with-the-Tomcat-plug-in-for-Maven上的视频教程。已经尝试了其中的几种变体,改变了 pom.xml 参数。pom.xml 的示例在这里

每次都使用命令构建存档mvn clean install tomcat7:exec-war-only,随后在目标目录中创建一个 .jar 或 .war 存档。

创建后,实现由java -jar Application.jar. 观察到以下输出:

INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 29, 2019 9:58:58 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Aug 29, 2019 9:58:58 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
Aug 29, 2019 9:58:58 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]

当导航到任何地址时,例如http://localhost:8080/Application/home我收到一个 404 错误页面(不是由 Tomcat 提供,而是 Chrome 的错误页面)。当通过页面运行相同的应用程序时mvn tomcat7:run,将按预期加载。

有人可以就此提出建议吗?

标签: javamavenjartomcat7pom.xml

解决方案


根据包装(.jar.war),您的网页资源(html/css/js 文件)必须位于不同的位置。我猜你的 URI 调用了 index.html 页面?

  • 打包.jar放在src/main/resources文件夹里
  • 打包.war放在src/main/webapp文件夹里

在您的情况下,您的 URL 无法访问,我怀疑您的网络资源不在好文件夹中。

链接可以帮助您更清楚地了解


推荐阅读