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二进制模式是无法比对出来的,但是文件大小是有区别的。

相关推荐
是苏浙7 小时前
Java实现链表1
java·开发语言
未若君雅裁7 小时前
上传数据安全:对称加密、非对称加密、签名与重放防护
java·安全
可乐ea7 小时前
【Spring Boot + MyBatis|第7篇】JWT 登录认证与拦截器实现
java·spring boot·后端·mybatis·状态模式
步步为营DotNet7 小时前
借助 C# 14 特性强化 .NET 后端数据验证的深度实践
java·c#·.net
西安邮电大学7 小时前
有关栈的经典算法题
java·后端·其他·算法·面试
手握风云-7 小时前
ProtoBuf:从序列化原理到高性能架构底座(一)
java·网络·架构
摇滚侠7 小时前
SpringMVC 入门到实战 配置类替换 XML 配置文件 86-91
xml·java·后端·spring·maven·intellij-idea
栗子~~7 小时前
金融场景下BigDecimal 运算规范 + 常用场景使用 + 数据库字段设计详解
java·数据库·金融
我登哥MVP7 小时前
SpringCloud Alibaba 核心组件解析:服务注册与发现(Nacos)
java·spring boot·后端·spring·spring cloud·java-ee·maven
兰令水8 小时前
leecodecode【单调栈】【2026.6.12打卡-java版本】
java·开发语言·算法