首先查看要替换文件的路径,用 * 代替 .class 可查看是否包含匿名内部类(xx$1.class、xx$2.class..)
jar -tvf xx.jar | grep xx*
一、无内部类情况
无内部类可以指定替换某个class
1、解压指定文件,路径为上一步得到的路径
jar -xvf xx.jar xx/xx/xx.class
2、在解压的文件夹中手动替换 xx.class 文件
3、将替换后的class文件,压缩进jar包
jar -uvf xx.jar xx/xx/xx.class
二、有内部类情况
匿名内部类博主没找到如何指定替换的方法,我指定解压 xx$1.class 时,只能解压出 xx.class 文件,所以最后想到的办法是,指定解压整个文件夹替换的方法
1、解压整个文件夹,比如需要替换文件路径为 xx/xx/xx.class,解压指定路径为 xx/xx/
jar -xvf xx.jar xx/xx/
2、在解压的文件夹中手动替换 xx.class、xx$1.class、xx$2.class...文件
3、将替换后的整个目录,压缩进jar包
jar -uvf xx.jar xx/xx/