外部Tomcat无法启动Spring Boot应用(JDK17/Windows11环境)
解决方案
1. 解决War包重复部署错误
停止Tomcat服务后执行以下操作:
- 删除Tomcat安装目录下
webapps文件夹中的wmm目录和wmm.war文件 - 清空Tomcat
work目录下的所有文件(清除临时编译缓存) - 重启Tomcat,确认
webapps下无残留文件后,重新部署war包
2. 修复版本兼容性问题
Spring Boot 3.0.x 要求 Servlet 5.0 规范,而 Tomcat 9.0.x 仅支持 Servlet 4.0,二者不兼容,这是应用无法启动且无日志输出的核心原因。你需要二选一:
- 升级Tomcat到10.0.x及以上版本(推荐Tomcat 10.1.x,完美适配Spring Boot 3.x)
- 降级Spring Boot到2.7.x版本(适配Tomcat 9.0.x)
3. 日志排查技巧
- 启动Tomcat时使用
catalina.bat run命令,在控制台实时查看启动输出(startup.bat会隐藏部分报错信息) - 检查Tomcat
logs目录下的catalina.out、localhost.log文件,这些文件会记录应用启动时的异常 - 若配置了Spring Boot日志框架(如Logback),可解压war包查看
WEB-INF/logs目录下的应用日志
4. 确认War包构建正确性
- 执行
mvn clean package(Maven项目)或gradle clean bootWar(Gradle项目)重新构建,确保构建过程无报错 - 解压war包,检查
WEB-INF/lib目录下是否包含所有业务依赖(spring-boot-starter-tomcat不应出现在此目录,因为scope=provided) - 确认
WEB-INF/classes目录下存在你的启动类WhereIsMyMoneyApplication.class和所有配置文件
5. 启动类配置验证
你的启动类继承SpringBootServletInitializer的写法是正确的,可额外验证:
- 确保
configure方法正确返回application.sources(WhereIsMyMoneyApplication.class) - 外部Tomcat部署时,
main方法不会被调用,可选择删除(不影响功能)
内容的提问来源于stack exchange,提问作者Achraf Ait Ibba
相关产品推荐
相关产品推荐

