IDEA 自带的反编译插件能打开 jar 反编译 class ,遗憾的是不能编辑 class ,有的时候我们需要修改 jar 的时候还需要解压,反编译 class ,然后新建.java ,修改代码,再编译,最后打包 jar 。我敢说中间的过程你肯定不是一气呵成的,如果 jar 有依赖还要花时间去排查,打包的时候还需要注意编译 jdk 的版本,有的命令忘了的话还需要查手册,其实基本上全是体力活。
我翻遍了 IDEA 插件市场并没有找到合适的直接编辑 jar 的插件,于是我打算简单花点时间写一个这样的插件 JarEditor ,可以实现无需解压直接编辑 jar 内的文件。
首先 IDEA 可以反编译 jar ,在 jar 内的 class 是可以直接打开看到反编译代码的,外部文件可以通过 File->Project Structure->Libraries 添加依赖然后反编译 jar 。
在插件市场安装插件 JarEditor 后,可以在.class 反编译文件中看到一个切换到 Jar Editor 的 tab 页
点击 Jar Editor 后可以直接对反编译的代码进行修改,修改完之后点击 Save/Compile 会编译当前修改的 java 内容并保存,然后点击 Build Jar 即可将编译保存的 class 文件写入到 Jar 包内。
这样编辑一个 Jar 包内 class 文件一气呵成无需解压也无需去敲命令。
下面是一个流程演示例子:
修改 jar 包内的资源文件也是支持的,流程和 class 文件是一样的,也是修改完要保存,然后再 Build Jar 即可。
在 jar 包的工程展示图,任意文件右键,可以看到 JarEditor 的 New 和 Delete 操作,可以新增文件和删除文件
此 IDEA 插件 JarEditor 可无需解压直接编辑 jar 包内 class 和资源文件,感兴趣的朋友可以去试试。
源码地址:https://github.com/Liubsyy/JarEditor
依赖 IDEA 最低版本为 IDEA2020.3 ,大于等于这个版本均可安装使用。
欢迎交流!
1
tuimaochang 223 天前
楼主牛逼
|
2
yulgang 223 天前
楼主牛逼
|
3
guiling 223 天前
试了可以打包,666
|
4
weijancc 223 天前
看了描述挺不错的, 我以前经常有这个编辑 jar 内 class 的需求, 不过现在没有了.
|
5
9c04C5dO01Sw5DNL 223 天前
真的,第一反应就是两个字:牛逼
|
6
GuryYu 223 天前
这个功能非常实用,感谢楼主
|
7
imokkkk 223 天前
牛逼
|
8
hexiaowu1993 223 天前
op ,牛逼!
|
9
proxytoworld 223 天前
厉害,这个直接编译咋实现的,对 java 不太熟
|
10
bxb100 222 天前
@proxytoworld jar 解压缩, 然后将 class 反编译成 java, 改完之后再编译回 class 替换, 打包回 jar
|
11
OrangeAdd 222 天前
大佬🐮🍺
|
12
beldon 222 天前
大佬牛批,先下载玩玩
|
13
EmpCold 222 天前
大佬要火,先看看!
|
14
rxmt 222 天前
大佬牛逼!!这就试试去
|
15
zx9481 222 天前
Build 是什么原理,请问是用当前项目设置的 jdk 进行编译的吗?
|
16
DiDr 222 天前
维护老项目很好用啊,之前都是替换 class
|
17
liubsyy OP @proxytoworld @zx9481 针对反编译的 class 源码使用运行时编译 JavaCompiler 编译增量的 class ,Build Jar 的时候将增量文件写入 jar 包内,目前是使用项目 jdk 编译,不设置 jdk 也可以编译(IDEA 运行时自带 jdk)
|
18
liubsyy OP 楼上的朋友过奖了,插件我也只是简单花了几个晚上写的,如果有 bug 欢迎大家指出和修改,有需要完善的建议也可以提
|
19
utre938722 218 天前
我之前都是替换 class 真的很烦,先装上回头试用
|
20
liubsyy OP v1.4 更新:
1. 支持 kotlin 2. 可选择是否需要编译(java,class,kt 等) 3. SDK 自定义设置 4. 重命名文件/文件夹 5. jar 包内复制文件到任何外部文件夹 6. 外部剪切板文件/文件夹复制到 jar 内 |
21
likeme 174 天前
|