首页 > 其他分享 >[JarEditor]一款无需解压直接编辑修改jar内容的IDEA插件

[JarEditor]一款无需解压直接编辑修改jar内容的IDEA插件

时间:2024-05-24 23:52:08浏览次数:26  
标签:反编译 插件 JarEditor jar IDEA class Jar

前言

IDEA自带的反编译插件能打开jar反编译class,遗憾的是不能编辑class,有的时候我们需要修改jar的时候还需要解压,反编译class,然后新建.java,修改代码,再编译,最后打包jar。我敢说中间的过程你肯定不是一气呵成的,如果jar有依赖还要花时间去排查,打包的时候还需要注意编译jdk的版本,有的命令忘了的话还需要查手册,其实基本上全是体力活。

我翻遍了IDEA插件市场并没有找到合适的直接编辑jar的插件,于是我打算简单花点时间写一个这样的插件,可以实现无需解压直接编辑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,大于等于这个版本均可安装使用。

欢迎交流!

标签:反编译,插件,JarEditor,jar,IDEA,class,Jar
From: https://www.cnblogs.com/liubsyy/p/18211860

相关文章

  • 画图工具之PlantUML插件使用
    目录1PlantUML插件1.1引言1.2什么是PlantUML1.3PlantUML插件1.3.1IntelliJIDEA中插件1.3.2VSCode中插件1.3.3使用例子1.4PlantUML时序图语法1.4.1声明参与者1.4.2消息传递1.4.2.1同步消息1.4.2.2异步消息1.4.2.3返回消息1.4.2.4自调用1.4.3生命线(Lifeline)与激活......
  • 爆火AI美女跳舞制作全流程-SD插件Ebsynth_Utility(附带所有工具包)
    1.基础介绍AIGC|ChatGPT行业介绍1.1SD简介StableDiffusionXL能够生成几乎任何艺术风格的高质量图像,是用来生成写实图像的最佳开放模型。StableDiffusion是一个可以和MJ相媲美的AI出图工具,简称SD它是一个开源的、免费的项目,没有公司在经营,如果你想用,是需要安装到自......
  • 【AI虚拟试穿】革新购物体验,一键换衣/试衣浏览器插件震撼上线
    用户友好型AI试衣,重塑在线购物新纪元1.产品简介:HeyBeauty,一个前沿的AI平台,打破传统试衣界限,通过先进的AI技术,为用户带来前所未有的虚拟试衣体验。无需线下繁琐的试穿流程,即可在线享受与实体店媲美的购物乐趣。2.功能亮点:智能虚拟试穿:实时适应各种体型和尺寸,以超高真实......
  • Android11快速编译并替换framework.jar
    Android11快速编译并替换framework.jar在Android11之前修改了framework相关代码,只需makeframework就可以编译出framework.jar。在Android11,这个编译命令不起作用了,根据framework/base/目录下Android.bp中的提示:java_library{name:"framework-minus-apex",defaults:......
  • utools插件开发踩坑记录 - vite+recat搭建打包到utools环境时运行页面报错unexpected
    问题现象在本地开发环境时,运行无问题,一但打包到utools环境运行时,就出现了下面的现象依赖"dependencies":{"@ant-design/icons":"^5.3.7","antd":"^5.17.3","react":"^18.2.0","react-dom":"^......
  • 使用BookMarkHub插件进行书签同步
    使用BookMarkHub插件进行书签同步去扩展商店下载“BookMarkHub”、获取githubtoken登录github点击右上角头像,进入settings设置点击左边栏最下方Developersettings开发者设置点击左侧Personalaccesstokens点击“Generatenewtoken”填写Note失效日期设置为“N......
  • 别为难自己,这个IDEA插件节省了很大时间!!
    前言在后端SpringBoo开发中,都需要一个接口测试工具,从一开始的postman,到现在的国产测试工具,数不胜数,而最方便的莫过于在IDEA中就可以调试,因为IDEA插件中有能力分析出当前项目所编写的Controller数据,可以进行统计,更方便我们发起http请求,不需要复制url到别的测试工具了,今天就推荐一......
  • netcore 开源的与插件有关的项目
    在.NETCore生态系统中,有一些开源项目可以实现类似于插件系统的功能,允许应用程序动态加载和运行扩展或模块。以下是一些值得关注的项目和框架:1.OrchardCoreOrchardCore是一个开源、模块化的应用程序框架和内容管理系统,基于ASP.NETCore构建。它提供了强大的模块化和扩展......
  • FullCalendar插件js原生用法
    1.先看下要实现的效果图,左侧栏为当日时间,顶部为部门所有人员,表格内容是人员事件,要求数据多的时候,左侧栏和顶部固定,支持横竖滚动条,如图:  2.这里用的js原生写法:<html><head><title>工作记录详情</title><metaname="decorator"content="default"/><s......
  • WPF插件之 - PropertyChanged.Fody使用详解
    总目录文章目录总目录一、PropertyChanged.Fody是什么?二、PropertyChanged.Fody的安装三、PropertyChanged.Fody的功能1.特性1实现属性通知的功能2通知其他属性4不进行属性通知3指定属性更改时将调用的方法5设置当前属性依赖的属性6不检查是否相等7DoNotSetChangedAttribu......