Maven执行spring-boot:run成功但内嵌服务器异常停止求助
多模块Spring Boot War包启动异常排查与解决
最近我在一个多模块Spring Boot项目的application目录下启动应用时遇到了棘手的问题:
我执行了这条启动命令:
mvn spring-boot:start -P dev -s <path>\settings.xml -Dspring.profiles.active=dev
构建明明显示成功,日志也提示Tomcat已经在8090端口启动,但实际上内嵌服务器始终处于停止状态,完全无法提供服务。
初步尝试与疑问
- 我知道通常可以用
java -jar方式启动Spring Boot应用,但我的应用是打包成war包的,不确定这种方式是否适用; - 另外我注意到,在STS IDE里启动服务器时会输出
AUTO-CONFIGURATION REPORT的日志,但命令行启动时完全看不到这条关键日志,这让我很难排查配置问题; - 后来我按照@andy-wilkinson的建议改用
spring-boot:run命令尝试启动,结果问题依然存在。
最终解决步骤
经过反复调试,我通过以下两步成功解决了启动问题:
- 先执行
spring-boot:repackage命令重新打包,生成可执行的war包:
mvn clean install spring-boot:repackage -P dev -s <path>\settings.xml -Dspring.profiles.active=dev -Dstart-class=<myclass>
- 用
java -jar命令启动生成的带-exec后缀的war包:
java -jar -Dspring.profiles.active=dev application\target\application-1.0.0.BUILD-SNAPSHOT-exec.war
补充说明
- 目前已知需要适配不同的运行环境,这部分配置我会后续针对性处理;
- 排查过程中我发现了一个隐藏问题:项目里有一个无用的
orm.xml文件会引发XML解析错误,删除这个文件后启动恢复了正常; - 关于Tomcat缓存日志的问题,我会另行提问寻求解决方案。
内容的提问来源于stack exchange,提问作者Rafa
相关产品推荐
相关产品推荐

