Jar包class文件反编译、修改、重新编译打包方法(含反编译工具jd-gui-windows-1.6.6.zip百度云资源)

2,503 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

替换已打包文件内的配置文件在部署项目的时候是比较常见的,有时也会遇到需要修改类文件的情况,可以修改源码进行重新打包,在条件不允许或修改很少的情况下,进行class文件替换也是可行的。

  • 我们需要使用反编译工具 jd-gui-windows ,附上百度云资源。
链接:https://pan.baidu.com/s/1RX2raPDfrtPMW4NS-QlATA 
提取码:idg5 

1.反编译文件并修改

以spring-core-5.3.1.jar为例,File->Save 即可将其保存为.java文件,此时可进行修改。 在这里插入图片描述

2.重新编译修改过的.java文件

使用编译工具 javac 对修改过的.java文件进行编译。

javac -classpath spring-core-5.3.1.jar BeanCopier.java

在这里插入图片描述

3.替换编译后的文件

使用压缩工具打开jar包(不是解压jar包),用编译后的.class文件归拽覆盖修改之前的.class文件即可。 需要注意的是:

  1. jd打开的文件可能跟源码不同,所以导出的源码也可能存在错误,如果替换不成功就只能进行重新打包了。
  2. 另外如果同时修改了几个文件,并且几个文件之间存在依赖关系,例如A.java 调用了B.java中的函数,如果修改了B.java中该函数的参数,则需先编译B.java并按上面的方法重新打成jar包,然后用这个新的jar作为-classpath编译A.java,否则会提示方法不对,所以替换class文件的场景以修改参数值或微小调整为主,复杂修改还是修改源码重新打包的好。