java - 无法使 JAR/WAR 可执行文件与嵌入式 Tomcat 7 一起使用

标签 java maven jar tomcat7 pom.xml

我有一个使用 tomcat7-maven-plugin 的 Maven 项目。我正在尝试将项目打包到 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 的示例为 here .

每次,都会使用命令 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 运行相同的应用程序时,页面将按预期加载。

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

最佳答案

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

  • 对于.jar打包,请将其放在src/main/resources文件夹中
  • 对于.war打包,请将其放在src/main/webapp文件夹中

就您而言,您的 URL 无法访问,我怀疑您的网络资源不在正确的文件夹中。

这个link可以帮助您更清楚地理解

关于java - 无法使 JAR/WAR 可执行文件与嵌入式 Tomcat 7 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57717711/

相关文章:

java - 带注解的依赖注入(inject)

java - pom.xml 文件的位置

java - 用于 Spring Boot 的 GraphQL Java 客户端

java - 如何压缩我的 jar 文件

java.lang.NoClassDefFoundError java 中的异常

java - 在Java中打印矩阵行

java - hibernate 标准。选择所有不同的实体

java - 无法执行目标 org.codehaus.mojo :exec-maven-plugin:1. 2.1 - kafka Storm 集成

java - 下载并替换java中正在运行的可执行文件

java - 以编程方式创建可绘制对象