1、拷贝要反编译的Jar包,放到一个空目录下
以下所有操作都是在当前目录下进行:
2、解压JAR包到当前目录:jar -xf ApacheJMeter_core.jar
3、找到要修改的class文件,根据它的位置创建.java文件,比如我要修改的是org\apache\jmeter\report\core\TimeHelper.class,就创建一个目录:
mkdir src\org\apache\jmeter\report\core
注意:在源路径前面加src
4、创建.java文件:src\org\apache\jmeter\report\core\TimeHelper.java
5、使用Idea打开TimeHelper.class,IDEA内置反编译器,会直接显示这个类的源码。将源码拷贝到.java文件中,进行修改。
6、修改之后重新编译:通常修改的这个类都要依赖于其他的文件,所以在编译时需要指定它的依赖,我不确定它都依赖哪些包,所以索性将JMeter的所有lib包都包含进来了:
javac -cp ".;C:\Users\MyName\Documents\software\jmeter-5.5\lib\*" -source 8 -target 8 -d . src/org/apache/jmeter/report/core/TimeHelper.java
注意:原来的.class文件在IDEA中打开时显示:

表示它是在jdk8的环境下构建的,所以重新编译时也要用jdk8。我第一次用了jdk17,虽然成功了生成了新的JAR包,但是我的修改不起作用。
7、此时,org/apache/jmeter/report/core下的TimeHelper.class应该已经更新了
8、更新JAR包:jar -uf ApacheJMeter_core.jar org/apache/jmeter/report/core/TimeHelper.class
至此,新的JAR包已经生成,替换即可。

4770

被折叠的 条评论
为什么被折叠?



