修改jar包中class文件的内容

过程

1、打开jar包,反编译class文件

2、新建一个java文件,把反编译的内容复制过去(或是直接导出java文件)。

3、修改内容后,使用javac -cp命令重新编译成class文件

4、把新的class文件,替换jar包中的旧class文件,就可以了。

实际演示

例如:我想要修改mysql驱动包mysql-connector-java-6.0.6.jar中maxAllowPacket的默认值。

1、使用jad打开jar包,先找到class文件PropertyDefinitions

修改jar包中class文件的内容

2、创建一个PropertyDefinitions.java文件,把反编译的内容复制过来,把65535修改成65535000,保存。

修改jar包中class文件的内容

3、使用javac -cp命令把PropertyDefinitions.java文件编译成class文件

修改jar包中class文件的内容

说明:java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,windows用分号;Linux、mac用冒号:

注意:要使用和jar包相同版本的jdk来编译,如不清楚,可以使用javap -verbose xxx.class 来查看,如下图:

修改jar包中class文件的内容

JDK版本和Java编译器内部的版本号如下:

J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50

4、使用压缩软件打开jar包,把上面编译好的class文件,拖入jar包中覆盖旧的class文件,保存。

修改jar包中class文件的内容

5、再次用jad反编译jar包,检查一下是否修改成功

修改jar包中class文件的内容