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

替换jar包中class文件

  1. 虽然.jar文件是一种Java归档文件,可以使用压缩软件打开,但是并不能通过压缩软件来修改其内容,只能通过jar命令来更新文件。

一、背景

在使用血氧仪SDK时出现了问题,经过分析是在申请权限时版本不兼容导致的闪退异常,基于此我们对SDK中的一个工具类进行了代码调整并替换。

二、操作步骤

1. 获取有问题的jar包文件

将有问题的jar包下载到本地,比如叫:EoxSDK-v1.0.1.jar

2. 使用IDEA自带的反编译插件(Jadx Class Decompiler)

将jar包反编译得到类文件,然后创建一个java文件将文件内容复制进去

注意:java文件所在的包名要和你要修改的类所在的包名一致,才能完成替换。

3. 修改有问题的部分并编译

对有问题的部分进行代码修正。

修正完成后编译得到一个正确的class文件

4. 替换jar包的class文件

这里将拷贝出的类文件按原目录创建好并放在与EoxSDK-v1.0.1.jar同级。如下图



执行命令替换class文件

jar -uvf com-business-1.0.jar com/business/service/tool/util/IgnoreSSLUtils.class

三、jar命令帮助

参数列表

名称说明
-c创建一个jar包
-t显示jar中的内容列表
-x解压jar包
-u添加文件到jar包中
-f指定jar包的文件名
-v生成详细的报造,并输出至标准设备
-m指定manifest.mf文件
-0产生jar包时不对其中的内容进行压缩处理
-M不产生所有文件的清单文件(Manifest.mf)
-i为指定的jar文件创建索引文件
-C表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令

1. 查看.class文件具体路径

查看要替换的.class文件在xxx.jar包中所在的具体路径,命令如下:

 jar -tvf archive-manage-service.jar | grep PigeonholeCaseInfoSynHandlerImpl.class

2. 解压指定的class文件

将xxxdemo.jar中指定的.class解压出来,命令如下:

jar -xvf archive-manage-service.jar  BOOT-INF/classes/cn/com/chnsys/handler/impl/PigeonholeCaseInfoSynHandlerImpl.class

3. 替换class文件

将替换后的.class重新打进xxxdemo.jar中,命令如下:

jar -uvf archive-manage-service.jar  BOOT-INF/classes/cn/com/chnsys/handler/impl/PigeonholeCaseInfoSynHandlerImpl.class


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

相关文章:

  • 使用 OpenAI 进行数据探索性分析(EDA)
  • VSCode 常用的快捷键
  • 七、箭头函数及简写、arguments、剩余参数、展开运算符、解构数组与对象、数组常见方法(forEach、map、join、reduce)
  • C++中的桥接模式
  • 大数据新视界 -- 大数据大厂之 Impala 性能飞跃:分区修剪优化的应用案例(下)(22 / 30)
  • MSTP知识点
  • 6.使用 VSCode 过程中的英语积累 - Run 菜单(每一次重点积累 5 个单词)
  • 有毒有害气体检测仪的应用和性能_鼎跃安全
  • 一文通俗讲透 RAG 背后的逻辑,让 AI 回答更精准
  • 网络空间搜索引擎- FOFA的使用技巧总结
  • 用OPenCV分割视频
  • Python 烟花展示:使用 Pygame 创建绚丽的夜空
  • IEEE Transactions on Consumer Electronics (TCE)投稿指南
  • Redis 优化
  • gitlab-runner集成CI/CD完整项目部署
  • 智源研究院与百度达成战略合作 共建AI产研协同生态
  • php strtotime常见用法
  • NLP:命名实体识别及案例(Bert微调)
  • Github 2024-09-22 php开源项目日报 Top10
  • 零基础入门ComfyUI(一)初识ComfyUI
  • 软件架构设计-系统架构师(七十二)
  • SQL_over_partition_by_order_by
  • go 安装三方库
  • ShiftAddAug:基于乘法算子训练的最新无乘法网络方案 | CVPR‘24
  • Wpf使用NLog将日志输出到LogViewer
  • 8.5 矢量图层点要素分级(Graduated)渲染使用