windows无源码的情况下修改更新jar包里的class

项目中最近引入了三方jar,此jar有逻辑bug,无源码,需增加非空判断,更新其中一个class类

第一步:使用反编译工具JD-GUI打开jar包

找到要修改的类
FIle->save(保存class的java文件)

最早一开始我没有使用JD-GUI工具,我是在idea里直接反编译看到的源码,ctrl+a复制,ctrl+v粘贴到新建的xx.java文件中来完成源码保存的,但此源码在javac编译的时候会遇到类型转换异常、找不到符号之类的错误,最后还是乖乖用JD-GUI工具来反编译保存源码

第二步:将java源码文件拖进idea

简单编辑,修改逻辑,保存文件

此处有一个坑点:JD-GUI工具反编译的源码,在遇到有双重foreach的时候丢失了第二个foreach的逻辑,好在javac的时候有符号错误的报错,我再复制了一下idea中反编译的细节更多的源码,把逻辑补全了,最后顺利编译成功。
提醒大家最好还是把idea反编译的内容与gui反编译的内容做一下比对,以免内容丢失。

第三步:执行javac编译

若需编译的java文件有import相关类,则javac编译的时候需指定相关jar路径

比如文件中引入了如下类
在这里插入图片描述
则需要新建lib文件夹,将相关依赖放进lib里
在这里插入图片描述
最后执行

javac -Djava.ext.dirs=D:\xxx\lib Schedule.java

# -Djava.ext.dirs=D:\xxx\lib 为待编译java文件的所有依赖jar
# Schedule.java为待编译的源码文件,绝对路径/相对路径均可

如果依赖的jar不多,也可以执行

javac -cp D:\xxx\lib\xx.jar Schedule.java
# 多个jar之间通过;分隔

第四步:更新class文件到jar包里

方案一:windows下简单粗暴:通过winrar打开jar,手动将class文件拖进对应目录位置,替换更新即可。(我用的这种)

方案二:使用命令: jar -uvf xx.jar Schedule.class

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值