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

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

相关文章:

  • 51单片机编程学习笔记——74HC245八路三态输出双向收发器
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_read_token
  • 矩阵压缩存储
  • 大白话TypeScript 第十章TypeScript 学习全阶段详细总结
  • Unity TMP_InputField 多行输入时的高度适应
  • Spring生命周期都有哪些阶段
  • k8s命名空间和资源配额
  • redis 与 DB 的一致性 7 种策略
  • 软考教材重点内容 信息安全工程师 第18章 网络安全测评技术与标准
  • 【C语言】高内聚低耦合:结构体、联合体、数组、字符串、枚举和指针的综合实践
  • 显式 GC 的使用:留与去,如何选择?
  • [RN]React Native知识框架图详解
  • GPU架构分类
  • win11远程桌面连接报错(出现身份验证错误。要求的函数不受支持。可能是CredSSP 加密数据库修正)的解决办法整理
  • 左值引用与指针的区别
  • rpc学习
  • 网络安全系统分为几级_网络安全系统的分级与软考要点解析
  • 解决样式隔离的方法
  • Live2d官方项目运行
  • c++头文件和命名空间
  • 网站建设 教案/网站模板哪家好
  • 服务周到的上海网站建设公/网络推广优化服务
  • 长沙网站开发流程/网站优化排名哪家好
  • 炫酷的企业网站模板免费下载/软文网站名称
  • 安徽省淮南市城乡建设委员会网站/百度高级检索入口
  • 推荐网站建设的书/2023疫情最新情况