新写的可直接编辑 Jar 包的 IDEA 插件-JarEditor

查看 47|回复 2
作者:liubsyy   
前言
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 操作,可以新增文件和删除文件

一些机制
  • 编译依赖的 JDK 是项目工程的 JDK ,可以选择编译的 class 目标版本,默认和 jar 包的 class 版本保持一致
  • 编译 java 的时候依赖的 classpath 就是工程项目的依赖,如果依赖包找不到可以添加依赖
  • Save/Compile 会将修改的文件保存到 jar 包所在目录的 jar_edit 子目录下,Build Jar 会把会 jar_edit 目录的文件增量写入 jar ,最后再删除这个目录

    总结
    此 IDEA 插件 JarEditor 可无需解压直接编辑 jar 包内 class 和资源文件,感兴趣的朋友可以去试试。
    源码地址:https://github.com/Liubsyy/JarEditor
    依赖 IDEA 最低版本为 IDEA2020.3 ,大于等于这个版本均可安装使用。
    欢迎交流!
  • tuimaochang   
    楼主牛逼
    yulgang   
    楼主牛逼
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部