替换jar包中单个class文件

背景

        给客户私部的环境出现了问题,找到原因并进行了代码调整。但是由于是2年前给客户进行的部署,当时的代码相比现在落后太多,无论配置文件、表结构都有很多改动。如果升级需要将相关依赖服务全部升级。风险较大!而且本次只调整了其中的一个工具类中的方法。

操作步骤

        最开始搜索发现都是将服务上的jar包反编译,用反编译后的java文件进行修改在重新打包,反复尝试了多次,失败!!!

        由于我只是修改了一个工具类,将原服务上的jar包反编译之后发现这个类文件没有什么变动,所以直接在现有的代码进行修改,然后进行打包,用打包后得到class文件替换原服务jar中的class文件。测试OK!具体操作步骤如下:

1、将服务器上的有问题的应用jar下载下来,比如叫:com-business-1.0.jar

2、利用IDEA 上安装的反编译插件(Jadx Class Decompiler)将jar包反编译得到类文件,然后与当前代码对比;

3、修改有问题的类文件,然后进行打包。比如:com-business-2.0.jar

4、利用解压文件解压com-business-2.0.jar,拷贝出要替换的class文件

注意:这里将拷贝出的类文件按原目录创建好并放在与com-business-1.0.jar同级。如下图:com-business-1.0.jar是线上有问题的包,com-business-2.0.jar是修改后重新打的包,com-business-2.0是解压后的,com.business.service.tool.util.IgnoreSSLUtils.class是要替换的class文件完整路径

5、执行命令替换class文件:

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

 如果需要替换更多class文件可以重复第5步,切记路径一定要一致。然后上传包到线上重启服务即可。亲测可用!

参考链接:替换jar包中的class文件_jar包替换class文件_哎哟哟~的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值