failed to get nested archive for entry Boot-inf/lib/xxx.jar

直接原因

修改 Spring Boot 的可执行 JAR 包时,往 BOOT-INF/lib/ 目录下添加或替换的 JAR 文件被错误地压缩了,而 Spring Boot 的类加载器要求嵌套的 JAR 必须采用"存储(STORED)"模式(即不压缩)。

核心原因

Spring Boot 的可执行 JAR(Fat JAR)结构特殊,它自身是一个 JAR,内部 BOOT-INF/lib/ 目录下又包含了项目依赖的其它 JAR 文件(嵌套 JAR)。Spring Boot 自定义的 JarFile 类需要能够通过文件偏移量直接访问这些嵌套的 JAR 。如果嵌套的 JAR 被压缩,这种直接访问机制就会失效。

问题场景:同样的包,测试环境可以,生产就不行

最可能的是:生产环境的JAR包是在测试环境打包,然后复制到生产环境时,复制过程中可能损坏了JAR包(如FTP使用ASCII模式传输二进制文件导致损坏)。或者生产环境的JAR包被某个部署工具(如jenkins、ansible)修改过(例如解压后重新打包,但压缩方式不正确)。

建议检查生产环境的JAR包是否与测试环境的完全一致(通过md5校验:md5sum ),此时通过Beyond compare二进制模式是无法比对出来的,但是文件大小是有区别的。

相关推荐
golang学习记11 分钟前
IDEA 2026.3 远程开发迎来重磅升级
java·ide·intellij-idea·远程开发
天天被压力31 分钟前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
敲代码的小小酥35 分钟前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
天天被压力41 分钟前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
apcipot_rain1 小时前
C++转Java日记(02)
java·开发语言·c++
nice_lcj5201 小时前
【从零理解 Spring AI · 03】Spring AI 在 Spring 生态里的位置
java·spring boot·大模型·spring ai·ai应用开发
码农小河6611 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
风若飞13 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt14 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
黑马程序员毕设14 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言