当前位置: 首页 > article >正文

java jar包内的jar包如何打补丁

问题描述

主包:hisca.jar,解压后 BOOT-INFO/lib下有其他jar包

因为一个小bug,需要修改这个hisca包下BOOT-INF/lib下的子jar包service-hisca-impl-1.0.0.jar中的一个service类及xml文件

操作步骤

1、主包jar -xvf hisca.jar解压后,找到内层包service-hisca-impl-1.0.0.jar

2、内层包使用jar -xvf  service-hisca-impl-1.0.0.jar 解压后,替换里面的class文件后,再重新使用 jar -cvf service-hisca-impl-1.0.0.jar * 打包新的内层补丁包;

3、将打包的新内层jar包拷贝到解压后的主包的指定目录下;

重新将解压后的主包目录下所有文件打包,jar -cvf hisca.jar * 打主包

打包后运行错误

但这样操作后java -jar启动主包报错:

 java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/spring-boot-starter-2.3.0.RELEASE.jar'. It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file

感觉在打包过程中,把内层jar包都压缩了,导致无法正确读取jar包?

网上提供了一个解决方案,使用windows的 winRAR修改jar包:

解决方案

        首先要把lib下的jar包拉出来,进行文件替换,压缩方式使用存储(如果不选默认压缩方式是标准,会对文件进行压缩的,jar命令貌似也做了压缩,所以上面方式不可取);然后将jar包再拉到lib下,压缩方式依然使用存储。
        在替换jar包里的文件的时候,用压缩工具打开(可以用winrar、好压,因为可以选压缩方式),将需要替换的文件拖进压缩包,此时要注意:更改压缩方式为存储!更改压缩方式为存储!更改压缩方式为存储!默认是标准

image


http://www.kler.cn/a/570677.html

相关文章:

  • 2022 年 12 月青少年软编等考 C 语言五级真题解析
  • 第6篇:面向对象编程重构系统
  • Spring MVC 返回数据
  • 如何实现前端“小手向右指”的效果
  • Zookeeper 的核心引擎:深入解析 ZAB 协议
  • ECharts饼图高级美化技巧:泛光效果实现与间隔布局
  • JavaWeb3、Tomcat
  • Transformer 代码剖析6 - 位置编码 (pytorch实现)
  • 机器学习11-经典网络解析
  • AI语音交互模组方案,设备无线物联网控制,实时语音联动应用
  • 数据结构:二叉搜索树(排序树)
  • Redis高可用部署:3台服务器打造哨兵集群
  • 基于 Rust 与 GBT32960 规范的编解码层
  • 动态表头报表的绘制与导出
  • 基于 Elasticsearch 和 Milvus 的 RAG 运维知识库的架构设计和部署落地实现指南
  • 深入剖析Java NIO的epoll机制:红黑树、触发模式与CPU缓存优化
  • 运动想象 (MI) 分类学习系列 (17) : CCSM-FT
  • OCR PDF 文件是什么?它包含什么内容?
  • 力扣 最长回文子串
  • M4 Mac mini运行DeepSeek-R1模型