- 准备工具: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 -encoding UTF-8 -cp "graphql-java-15.0.jar;lib\*" Assert.java
2026-02-02更新:-cp “graphql-java-15.0.jar;lib*” 表示依赖其他包,如果有其他依赖包,在当前目录下建目录lib,存入当前类依赖的其他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文件引入:
<!--graphql-java-15.0.jar依赖的其他jar begin-->
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.7.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>java-dataloader</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.29</version>
</dependency>
<!--graphql-java-15.0.jar依赖的其他jar end-->

360

被折叠的 条评论
为什么被折叠?



