Spring Boot运行fat jar报错Unable to open root Jar file问题问询
根因说明
该问题是Spring Boot 2.4.0-SNAPSHOT快照版本的已知缺陷,内嵌Tomcat在解析fat jar内部依赖路径时逻辑异常,额外生成了多余的*字符,导致无法正确定位jar包内的依赖文件。你当前配置中将spring-boot-starter-tomcat设为provided scope,又额外引入了tomcat-embed-jasper依赖,二者的版本匹配问题放大了该缺陷,所以才会出现只有java -jar运行时报错,IDE和mvn spring-boot:run运行正常的情况。
解决方案
- 方案1(最推荐):将Spring Boot父依赖版本替换为正式稳定版,快照版本身为开发测试版本,存在未修复缺陷属于正常情况,你可以将
spring-boot-starter-parent的版本改为2.4.0.RELEASE及以上的正式发布版本,重新打包即可解决该问题。 - 方案2(临时兼容):如果你暂时需要保留2.4.0-SNAPSHOT版本,直接移除
spring-boot-starter-tomcat依赖的<scope>provided</scope>配置即可,你当前项目打包格式为jar,不需要将内嵌Tomcat标记为外部提供,该配置会导致fat jar内的Tomcat相关依赖版本不匹配,触发路径解析错误。 - 验证方法:修改配置后执行
mvn clean install重新打包,再运行java -jar target/myapplication-1.0.jar即可正常启动。
内容的提问来源于stack exchange,提问作者coterobarros
相关产品推荐
相关产品推荐

