一、它是什么?
顾名思义,它是一个用来编辑字节码的简单的小工具。
二、它能干嘛?
字节码编辑器?据我所知,修改字节码相当麻烦。一般情况下,我们需要:
- 将 jar 包用 JD-GUI 等工具,将所有 Class 文件全部反编译成 Java 文件;
- 外网安装 Idea,将该Java项目拖到 Idea;
- 解决各种 Maven 依赖,但有些依赖在内网 Maven 仓库(common-parent.pom、common-project、HbaseService、KafkaService等),故下载失败,且解决较困难;
- 编辑相关代码,执行 mvn package,得到新 jar 包。
目前来看,修改 jar 包的确比较麻烦。因此,花了点时间,写了一个简陋的小工具,解决在现网上无法即时编辑 class 的问题。
注意,它用来解决一些较简单、易修改的需求,如果较复杂、涉及代码较多,还请绕道……(∩_∩)
三、怎么使用?
1、运行环境
JDK1.5+ (现网一般都有这个环境吧)
2、使用方法
- 运行 ClassEditor.exe
- 填写:Jar包位置
- 填写:Class类名(全路径)
- 选择:操作的对象,支持字段和方法
- 选择:操作的类型
- 生成Class文件,Class文件会生成在Jar包所在路径。
最后,使用 7Z 等压缩工具,将该Class文件覆盖原Class文件即可!(注意覆盖之前,尽量备份原 Jar 包)
3、使用场景
- [x] 修改三方库jar包的源码(如Gson的某BUG:反序列化Map时,int转double问题,解决思路即使用本工具修改某处源码即可,详见:链接)
- [x] 某些全局控制开关(可能是一个Boolean类型的全局变量),由于没有配置在配置文件,但是急需修改其开关状态;
- [x] 由于没有对某段代码进行 try catch,导致运行时异常,程序假死/退出,需要马上捕获异常;
- [x] 方法内某段代码逻辑有问题,需要修改;
- [x] 急需打印某些对象;
- [x] 急需监控某方法/代码的执行时间
- [x] 其他……
4、注意事项
- 不支持泛型等语法糖,编写代码时请去泛型
- Class文件的每次修改都是在上次修改的基础上进行,如需重置,请重启程序;
- 如果编写的代码,点击:生成Class文件时提示:CannotComileException:[source error] no such class:xxx,不要慌,只需在编辑框中使用import导入相关Class即可:
四、下载地址
链接:https://download.csdn.net/download/localhost01/11120033
更多文章,请关注:开猿笔记