修改jar包内class的新方式-JarEditor

369 阅读3分钟

平常我们需要修改一个没有源码的jar内class的时候,需要解压jar反编译class再修改编译打包。

这里向大家介绍一种全新的修改jar内文件的新方式:使用JarEditor插件,界面一键化操作,无需解压无需敲命令,操作更简单更快速。

安装

在插件商城搜索JarEditor,可直接安装插件

JarEditor_install.png

插件使用

1. 修改class文件

安装完后,任意打开一个jar的class,可以看到反编译后的class内容,选中Jar Editor的tab页签,就可以直接编辑class了

image.png

修改完代码后先点击 Save,这个过程会编译class,编译成功后点击Build Jar就修改jar完成了,是不是很简单?下面是一个修改的例子。

Jul-06-2024 15-25-13.gif

SDK可以选择需要的JDK或者其他SDK,Target为编译class的目标版本,默认是和反编译的class前的版本保持一致。

附:修改外部jar

选择File->Project Structure->Libraries,然后添加工程外的jar即可打开jar内文件修改

image.png

也可以将jar包粘贴到本项目中,然后右键->Add as Library...

image.png

2. 修改配置文件

操作流程同修改class 文件,不需要选择Compile

image.png

3. JAR包内新增文件

在工程视图jar包内某个文件夹上右键->JarEditor->New,可以新建Class/Kotlin/File/Directory

image.png

选择后输入文件名即可在jar内新增文件,默认是空文件

image.png

新增后打开可以写入内容,Class和Kotlin新建完文件是有模版的,无需后缀名,如果是JarEditor->New->File则需要写文件后缀名。

image.png

3. 删除JAR包内文件

在工程视图jar包内某个文件或者文件夹上右键->JarEditor->Delete,则会删除选择的目录或者文件,支持多选。

image.png

4. 重命名文件

在工程视图jar包内某个文件或者文件夹上右键->JarEditor->Rename,输入名字后即可将原来的名字修改为新的名字,修改完立即生效。

image.png

5. 拷贝JAR包内文件到外部文件夹

在工程视图jar包内某个文件或者文件夹上右键->JarEditor->Copy,可以将jar包内文件拷贝到剪切板(支持多选)

image.png

然后在外部任意一个文件夹内,使用Ctrl+V,即可将刚才复制的文件拷贝到这个目录

image.png

6. 粘贴外部文件到JAR包内

外部文件使用Ctrl+C复制后,在jar内某个文件夹上右键->JarEditor->Paste(不能直接用Ctrl+V,Ctrl+V被IDEA默认占用了),即可将剪切板的文件粘贴到jar包内,一气呵成。

image.png

7. JAR包内搜索字符串

工具栏有一个搜索图标,点击后输入需要搜索的字符串,可搜索到jar包内的文件,包括class和普通文件。

image.png

点击搜索后的文件列表,可跳转到具体的文件

image.png

搜索的class如果是class jar的话取决于反编译的内容,如果是source jar取决于java文本。

8. source jar的支持

IDEA内打开的jar分两种,class jar和source jar,如果下载了源码的话,打开的是source jar,即打开的是一个java文件,而不是class文件,这里一定要注意

image.png

此时如果修改代码的话,生效的是source jar,比如这里改的是FindInstancesOfClass-1.0.3-sources.jar。

image.png

那如何修改class jar呢?

点击 JarEditor Tools上面的跳转链接:Click hear to open class jar 即可跳转到class文件

image.png

此时展示的class为反编译的代码,可修改class 文件,按 修改class文件 的流程操作即可。

也可以从source jar中导入代码:Import from source jar

image.png

Import from source jar 和直接在souce jar中的java修改的区别是:前者修改的是class jar后者是source jar。

总结

本文主要介绍了使用JarEditor直接对jar包文件进行增删改查操作,简化了修改jar的流程,感兴趣的朋友可以去试试。

本文篇幅有限,具体原理和实现细节可阅读源码

源码:github.com/Liubsyy/Jar…