[JarEditor]一款可直接编辑jar包的IDEA插件

前言

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/JarEditoricon-default.png?t=N7T8https://github.com/Liubsyy/JarEditor

依赖IDEA最低版本为IDEA2020.3,大于等于这个版本均可安装使用。

欢迎交流!

### 关于 EditorJumper 的概述 EditorJumper 并未在已知的公开资料中被提及,因此可能是一个混淆名称或者尚未广泛传播的小众工具。然而,基于所提供的 `JarEditor` 插件的相关描述[^1],可以推测用户可能希望找到类似的插件或工具来实现更高效的开发需求。 如果假设 EditorJumper 是类似于 JarEditor 的功能扩展,则它可能会提供以下特性: - **直接编辑 JAR 文件中的类和资源**:无需解压缩即可操作。 - **集成到 IDE 中**:例如 IntelliJ IDEA 或其他支持插件生态的环境。 - **增强的功能集**:相比基础版本的 JarEditor,可能增加更多高级选项,比如批量处理、自动备份等。 以下是针对如何下载、安装以及配置此类假定插件的一般指导: --- ### 下载与安装流程 #### 1. 获取插件源 通常情况下,开发者会将插件托管至公共代码仓库(如 GitHub, GitCode)。对于 EditorJumper 假设存在的情况,可以从其官方文档或社区推荐链接获取最新稳定版二进制文件或源码编译。 例如,在类似下面这样的地址查找并确认可用性: ```plaintext https://example.com/editorjumper/releases/latest ``` #### 2. 安装方法 大多数现代 Java 开发环境中都内置了便捷方式用于加载第三方组件。具体而言, - 如果是 JetBrains 系列产品 (IntelliJ IDEA),可以通过菜单路径完成设置:“File -> Settings -> Plugins”,随后点击 “Install Plugin from Disk...” 来手动指定本地 `.zip` 或者 `.jar` 形式的分发档; - 对应开源构建脚本也可能附带 Gradle/Maven 工程模板以便快速部署测试实例。 上述过程需注意兼容性校验,确保目标平台版本满足最低要求。 --- ### 配置指南 成功导入之后,一般需要经历以下几个环节才能正式启用全部潜力: 1. **初始化参数调整** 打开对应界面后,定位到新增加的服务区块,按照提示输入必要的全局变量定义(譬如默认存储位置设定)。 2. **关联项目结构映射** 明确哪些模块应该受到该机制影响,并通过图形化向导建立虚拟目录连接关系,从而简化后续维护成本。 3. **自定义快捷键绑定** 考虑效率因素,建议分配专属组合按键触发常用命令序列,减少鼠标依赖度的同时提升整体流畅感体验。 下面是模拟一段简单的 Groovy DSL 片段展示部分自动化逻辑片段: ```groovy // Example of configuring custom actions within an editor context. project.afterEvaluate { tasks.withType(Jar).all { jarTask -> doLast { println 'Custom post-jar action executed!' // Additional processing steps here... } } } ``` --- ### 注意事项 尽管这些类型的解决方案极大地方便了日常作业模式转换,但仍有一些潜在风险需要注意规避: - 数据一致性保障措施不足可能导致意外丢失重要更改记录; - 过多依赖外部库容易引发跨团队协作障碍等问题. 务必仔细阅读随附的帮助手册说明条款后再行动! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值