java - 无法使 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
,将按预期加载。
有人可以就此提出建议吗?
解决方案
根据包装(.jar
或.war
),您的网页资源(html/css/js 文件)必须位于不同的位置。我猜你的 URI 调用了 index.html 页面?
- 打包
.jar
放在src/main/resources
文件夹里 - 打包
.war
放在src/main/webapp
文件夹里
在您的情况下,您的 URL 无法访问,我怀疑您的网络资源不在好文件夹中。
此链接可以帮助您更清楚地了解
推荐阅读
- html - CSS box-shadow 替代绘制逼真的云?
- python - 将值从一列移动到另一列
- javascript - Node.js fs.readFile 将读取的数据存储在内存中
- python - 对两个 pandas 列执行逐行操作
- reactjs - 提交时如何获取json数据的输入值
- postgresql - 分布式排序和分页
- java - 如何使用 Spring MVC 进行正确的重定向?
- ios - 在范围内找不到类型“GADRequestError”
- wso2 - wso2 api manager 2.6.0 Suspending endpoint : AnonymousEndpoint with address https://{uri.var.hostname}:{uri.var.portnum}/oauth2/token
- shopify - Shoppify include image with max height in liquid template