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

替换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.mrgr.cn/news/36153.html

相关文章:

  • 去年营收增速仅1.4%,成长性恐不足,这家批发业公司终止了
  • 代码随想录冲冲冲 Day55 图论Part7
  • 节点分类、链路预测和社区检测的评价指标
  • 【C++ Primer Plus习题】17.7
  • DBAPI如何实现插入数据前先判断数据是否存在,存在就更新,不存在就插入
  • 机器学习算法与Python实战 | 三万字详解!GPT-5:你需要知道的一切(上)建议收藏!
  • OpenCV4.8 开发实战系列专栏之 01- 环境搭建与图像读写
  • 使用 from __future__ import annotations 语句来允许在类型注释中使用尚未定义的类名
  • centos7安装Redis单机版
  • AI时代下的程序员:如何应对技术变革与提升竞争力
  • 先进封装技术 Part01---“凸块”(Bump)科普
  • 小孩真的需要手机上学吗?怎样远程了解他在学校用iPhone干什么?
  • 工作安排 - 华为OD统一考试(E卷)
  • Educational Codeforces Round 20 F. Coprime Subsequences(DP+容斥)
  • 深入解析网络通信关键要素:IP 协议、DNS 及相关技术
  • 股价上涨210%后,目标价又被花旗大幅上调,AppLovin还能继续上涨吗?
  • 前端文件上传全过程
  • PG逻辑订阅功能
  • 尚硅谷MyBatis笔记
  • Spring 的作用和优势