记一次Unable to open nested entry ‘BOOT-INFlib.jar‘. It has been compressed

2022年8月23日

问题背景

前段时间由于工作失误,误将工程项目中某一个依赖包没有添加@loadbalanced注解就直接打包依赖到的主工程中,并发送项目现场测试。出来混的,迟早都要还的。这不,今天就街道项目现场测试部同事投诉,说是程序包无法启动。报错如下:

在这里插入图片描述

排查原因

​ 当时第一反应是bis-service这个包咋这么熟悉嗫,灵光一闪,WC,这不是我单独打包替到主工程包里面的那个依赖包么。那这个问题的排查思路也就出来了:

  • 将bis-service替换到程序包的lib时出错

  • bis-service包本身有错

    如果bis-service包本身含错,报错信息应该不是这样,所以问题产生的原因可以锁定在使用bis-service替换到程序包lib过程中。

问题产生原因分析

当时将bis-service替换到lib中时,主程序是已经打包成了jar,所以当时是直接以解压软件打开后,将bis-service.jar包替换致lib下,重新压缩。是否是压缩软件重新压缩过程中,将bis-service.jar也压缩了,所以导致springboot不能读取该包?

解决方案

既然不能直接使用解压软件,那就直接使用java自带命令解压后,然后将对应jar包替换到lib中,在使用java命令重新压缩不就行了么(我可真是个小天才)。

  1. 使用如下命令,将主程序包解压, 其中xxx是需要解压的jar包名

    jar -xvf xxx.jar
    
  2. 解压后,将需要替换的jar包替换到/BOOT-INF/lib/ 下,再使用如下命令重新压缩

    jar -cfM0 ./
    

结果

将替换好的主程序包java -jar,嘿,好了!

结果

将替换好的主程序包java -jar,嘿,好了!

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值