背景
在开发中我们有时会遇到这样的场景,需要修改jar包内某个class,常见的方法就是先解压缩,然后反编译这个class,新建java修改再编译,最后再打包,整个过程是非常耗时的。
这里向大家介绍一款IDEA插件:JarEditor,可以一键修改JAR包内文件,无需解压。
插件安装
首先在插件商城搜索 JarEditor,可直接安装插件
插件使用
安装完后,任意打开一个jar的class,可以看到反编译后的class内容,选中Jar Editor的tab页签,修改完代码后先点击 Save,这个过程会编译class,编译成功后点击Build Jar就修改jar完成了,就可以直接编辑class了,下面是一个例子:
修改配置和资源文件不要勾选Compile,其他步骤相同。
在JAR文件上右键,可对JAR内文件进行增/删/改/查/复制/粘贴
搜索功能支持JAR内搜索和全局搜索,支持大小写、全词匹配和正则表达式。
针对混淆的JAR,也可以通过字节码修改工具直接修改class,而不是普通的编译方式。
比如可以用Javassist,进行字段和方法的增删改。
也可用VisualClassBytes(基于ASM和BCEL的字节码编辑器),可修改类信息、常量池、字段、内部类,以及方法的基本信息、字节码指令、本地变量表、行号表和异常表等。
附:修改外部jar
File->Project Structure->Libraries,然后添加工程外的jar即可打开jar内文件修改。
也可以在JAR文件上右键->Add as Libraries.
总结
本文主要介绍了使用JarEditor直接对jar包文件进行增删改查操作,简化了修改jar的流程,感兴趣的朋友可以去试试。
本文篇幅有限,具体原理和实现细节可阅读源码