1.如何直接修改jar包(无需解压)
如何直接修改jar包(无需解压)
有的改源改时候我们需要直接修改Jar包内的某个class,一般的码修码方式是解压->反编译class->修改反编译的class->编译->编译后class拽回jar(或者直接打包jar),中间的包源流程还是比较繁琐的,解压和打包还需要通过各种命令,改源改反编译还需要用到JD-GUI,码修码写代码还得新建java文件甚至还要用到编辑器或者IDE,包源java打电话源码编译还得注意设置目标版本。改源改
这一顿操作猛如虎的码修码过程中,大脑在多种工具、包源各种命令和各种注意事项中来回切换,改源改我们知道大脑就跟CPU一样,码修码来回切换上下文势必浪费大量脑细胞,包源集中精力做一个点的改源改淘宝店铺招牌源码事既轻松又效率高。
于是码修码我想,有没有直接修改Jar包的包源插件呢?不用解压就能直接修改反编译的class,写完直接增量编译打包,整个过程中全程是自动化的。
我翻遍了插件市场,并没有找到这样的源码天空怎么下载插件,于是我打算自己写一款这样的IDEA插件JarEditor来实现无需解压直接编译Jar包,包括class和资源文件。
本质上开发插件还是替换上面的手动修改jar文件的流程,但是又要尽可能复用现有的功能
于是我在IDEA反编译的jar包编辑页增加一个辅助编辑页(有点类似MavenHelper在pom.xml的编辑页增加辅助页),用来修改反编译的class代码
这样几乎不费吹灰之力就解决了无需解压和反编译的两个流程点,因为IDEA是水果竞猜网站源码自带Jar内class反编译的。
点击Jar Editor的tab标签辅助页面,我加上了几个操作的UI
里面有默认的JDK版本和编译目标版本,默认编译版本和要修改的class版本保持一致,当然也可以手动设置。
然后在Jar Editor的辅助页就可以直接编辑代码了
考虑到可能要修改多个文件,所以我做了两个按钮,知乎app源码Save/Compile和Build Jar,点击Save/Compile可将当前修改的jar临时编译并写入到jar包所在目录的子目录jar_edit_out中,当点击Build Jar的时候,将修改过的文件增量写入jar内,最后删除临时目录。
下面是一个完整的修改例子:
修改资源文件的话也是一样的操作,不过不用编译,也是点击Save直接保存到临时目录,最后Build Jar写入jar内。
通过简单的几步,就实现了修改Jar内文件的一系列自动化流程。
有时我们还会新增或者Jar包内的一些文件/文件夹,于是我在Jar包内的文件上加了右键的操作Action
我已经发布插件到Jetbrains的插件市场,插件市场搜索JarEditor可直接安装使用,也可根据文末源码自己编译自己安装(基于SDK IDEA.3),IDEA最低要求.3,IDEA.3及之后的版本均可安装使用。
然后就可以直接打包jar包内的文件了,如果是外部jar,需要在File->Project Structure->Libraries中添加jar即可打开jar内的文件。
另外文章篇幅有限,下面是具体插件源码地址以供学习交流:
编译和打包的原理都在源码和注释里。
欢迎交流!
2025-01-19 07:341946人浏览
2025-01-19 07:021395人浏览
2025-01-19 06:45615人浏览
2025-01-19 06:32472人浏览
2025-01-19 05:38689人浏览
2025-01-19 05:092644人浏览
中国消费者报南昌讯朱任飞记者朱海)今年以来,江西省鹰潭市市场监管局始终坚持将持续优化营商环境作为吸引外商投资的重要抓手,通过聚焦外资登记的“四减一优”策略即减时限、减材料、减环节、减事项以及优化审批流
大公報綜合《華爾街日報》、《紐約郵報》報道:美國前眾議院議長佩洛西的股票交易,再受外界質疑。在美國司法部決定起訴互聯網巨頭谷歌壟斷前的一個月,佩洛西拋售其持有的3萬股谷歌股票,時機巧合導致外界質疑她利
中国消费者报成都讯记者刘铭)无线充电打破了电能传输只能依靠导线直接接触式传输的方式,属于非接触式传输,能够避免接触式电能传输可能带来的接触火花、滑动磨损、爆炸电击等问题。但由于产业发展迅速,产品更新较