Spring Boot部署至外部Tomcat v8.5后出现404错误求助
Spring Boot部署外部Tomcat8.5 404问题排查方案
一、调整打包方式与依赖配置
- 确保
pom.xml中打包方式设置为war:
<packaging>war</packaging>
- 排除内嵌Tomcat依赖,并添加工具类依赖(避免与外部Tomcat冲突):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
二、修改启动类继承SpringBootServletInitializer
外部Tomcat部署需要启动类继承该类并重写配置方法,让容器能正确识别Spring Boot应用:
@SpringBootApplication public class DevhubApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DevhubApplication.class); } public static void main(String[] args) { SpringApplication.run(DevhubApplication.class, args); } }
三、确认访问路径与WAR包名称匹配
外部Tomcat的访问路径规则为:http://localhost:8080/[WAR包名称]/[Controller映射路径]
- 如果你的WAR包名为
devhub.war,完整访问路径应为http://localhost:8080/devhub/home - 若想直接通过
/home访问,需将WAR包重命名为ROOT.war,Tomcat会将其作为根应用处理
四、解析启动红色日志
日志红色多为警告或错误,重点排查:
- 类加载失败、依赖缺失的报错信息
- ServletContext初始化失败的提示
- Controller映射未注册的日志(可开启debug级别日志查看映射详情)
五、静态资源与前端视图检查
若为前端页面404,需确认:
- 静态资源(HTML、JS、CSS等)是否放在
src/main/resources/static或src/main/resources/public目录下 - Controller返回的视图名称是否与实际文件匹配,模板引擎(如Thymeleaf)配置是否正常
内容的提问来源于stack exchange,提问作者Dragon
相关产品推荐
相关产品推荐

