替换已打包文件内的配置文件在部署项目的时候是比较常见的,有时也会遇到需要修改类文件的情况,可以修改源码进行重新打包,在条件不允许或修改很少的情况下,进行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文件即可。
需要注意的是:
- jd打开的文件可能跟源码不同,所以导出的源码也可能存在错误,如果替换不成功就只能进行重新打包了。
- 另外如果同时修改了几个文件,并且几个文件之间存在依赖关系,例如A.java 调用了B.java中的函数,如果修改了B.java中该函数的参数,则需先编译B.java并按上面的方法重新打成jar包,然后用这个新的jar作为-classpath编译A.java,否则会提示方法不对,所以替换class文件的场景以修改参数值或微小调整为主,复杂修改还是修改源码重新打包的好。