Spring Boot项目WAR部署外部Tomcat静态文件访问404问题排查
Spring Boot 2.7.8 WAR包部署Tomcat 8.5.47报404的解决记录
问题场景
作为Spring/Spring Boot新手,我尝试将带静态文件的Spring Boot 2.7.8项目打包为WAR部署到现有Tomcat 8.5.47,操作步骤如下:
- 在pom.xml中设置
packaging为war,添加spring-boot-starter-tomcat依赖并将其scope设为provided,关键配置如下:
<packaging>war</packaging> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
- 启动类继承
SpringBootServletInitializer - 将内容为"Hello World"的
index.html放在src/main/resources/static目录 - 执行
mvn clean package完成打包,检查WAR包发现index.html位于WEB-INF/classes/static路径下
但部署到Tomcat后,访问http://localhost/demo-01-0.0.1-SNAPSHOT时出现404错误。
问题排查与根源
经过排查发现,问题出在JDK版本不兼容:
- 部署用的Tomcat 8.5.47运行在Java 8环境
- 项目pom.xml中指定了
<java.version>17</java.version>,导致项目编译时使用Java 17的字节码版本,与Tomcat的Java 8环境不兼容,最终引发404。
解决方法
移除pom.xml中的<java.version>17</java.version>配置,重新执行mvn clean package打包后部署到Tomcat,再次访问即可正常加载静态页面。
内容的提问来源于stack exchange,提问作者Flatline1963
相关产品推荐
相关产品推荐

