Java 无法使JAR/WAR可执行文件与嵌入式Tomcat 7一起工作

Java 无法使JAR/WAR可执行文件与嵌入式Tomcat 7一起工作,java,maven,jar,tomcat7,pom.xml,Java,Maven,Jar,Tomcat7,Pom.xml,我有一个使用tomcat7maven插件的maven项目。我试图将项目打包到一个jar(或war)中,这样它就可以在不使用maven的情况下运行(MVNTomcat7:run)。到目前为止,我的尝试未能正确显示网页 我遵循了(2.6:带有可执行Tomcat的Web应用程序)中的步骤。此外,还遵循了关于的视频教程。已经尝试了其中的几个变体,修改了pom.xml参数。下面是pom.xml的一个示例 每次使用命令mvn clean install tomcat7:exec war only构建归档文件

我有一个使用
tomcat7maven插件的maven项目。我试图将项目打包到一个jar(或war)中,这样它就可以在不使用maven的情况下运行(
MVNTomcat7:run
)。到目前为止,我的尝试未能正确显示网页

我遵循了(2.6:带有可执行Tomcat的Web应用程序)中的步骤。此外,还遵循了关于的视频教程。已经尝试了其中的几个变体,修改了pom.xml参数。下面是pom.xml的一个示例

每次使用命令
mvn clean install tomcat7:exec war only
构建归档文件,然后在目标目录中创建.jar或.war归档文件

创建之后,通过
java-jar应用程序.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"]
当导航到任何地址时,例如我收到一个404错误页面(不是Tomcat提供的,而是Chrome的错误页面)。当通过
mvn tomcat7:run运行同一应用程序时,页面将按预期加载


有人可以提供建议吗?

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

  • 对于
    .jar
    打包,将其放入
    src/main/resources
    文件夹中
  • 对于
    .war
    打包,请将其放入
    src/main/webapp
    文件夹中
在您的情况下,您的URL无法访问,我怀疑您的web资源不在良好的文件夹中


这可以帮助你更清楚地理解

嗨,哈利,谢谢你的回复。我试着按照你建议的布局,但还是没有成功。理想情况下,我的解决方案需要不使用Spring Boot。您能否进一步提供帮助?您正在从事的Java EE,SE项目是什么类型的?该项目是Java SE,运行SDK的1.8版
javax.servlet api
作为依赖项以及
tomcat7 maven插件
包含在内。我还包含了pom.xml的一个示例,可在我不太清楚的网站上查看,当您使用嵌入式
tomcat
服务器时,您必须共享一个web资源,或者在代码中实现一个HttpServlet接口,该接口将响应您的请求。如果需要嵌入式web服务器,也可以使用
Jetty
。至少看起来您的打包工作正常,但您共享的资源不可用。你能分享你的代码吗?