使用jd-gui反编译修改jar包里的.class并重新生成新jar
短信预约 -IT技能 免费直播动态提醒
- 准备工具:jd-gui.exe反编译工具
- 下面以我本地修改
graphql-java-15.0.jar
包为例:
- 准备jar包,新建origin文件夹,将jar包通过win.rar或当前文件夹cmd运行解压命令
jar -xvf graphql-java-15.0.jar
解压到origin文件夹内
- 使用 jd-gui工具 打开
graphql-java-15.0.jar
假如我要修改Assert.class,不要在 jd-gui工具里面修改,先ctrl+s
保存要修改的文件到某目录
我保存在跟graphql-java-15.0.jar
同目录下
- 使用文本编辑工具(我用nodepad),修改java文件里的某段逻辑,然后通过命令重新编译该java文件为class文件
javac -cp graphql-java-15.0.jar Assert.java // -cp graphql-java-15.0.jar 表示Assert.java编译时依赖graphql-java-15.0.jar
4. 用编译好的Assert.class替换掉原先解药的origin目录里的,使用命令将origin目录里的文件打包为新的jar包:
先进入到origin,执行打包命令:
jar -cvfm0 graphql-java-15.0-modify.jar META-INF/MANIFEST.MF ./
至此便生成新的jar包
5. 引用修改后的jar包
将jar包放在项目lib,修改pom文件
注意!!!
原本通过pom引入的jar包,如果有外部包,要手动引入,我们修改后引入的graphql-java-15.0-modify.jar不会自动导入这些外部依赖包
在pom文件引入:
<dependency><groupId>org.antlrgroupId><artifactId>antlr4-runtimeartifactId><version>4.7.2version>dependency><dependency><groupId>com.graphql-javagroupId><artifactId>java-dataloaderartifactId><version>2.2.3version>dependency><dependency><groupId>org.reactivestreamsgroupId><artifactId>reactive-streamsartifactId><version>1.0.3version>dependency><dependency><groupId>org.slf4jgroupId><artifactId>slf4j-apiartifactId><version>1.7.29version>dependency>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341