使用jd-gui反編譯修改jar包里的.class并重新生成新jar問題
準(zhǔn)備工具:
jd-gui.exe反編譯工具
下面以我本地修改graphql-java-15.0.jar包為例:
1.準(zhǔn)備jar包
新建origin文件夾
將jar包通過win.rar或當(dāng)前文件夾cmd運(yùn)行解壓命令jar -xvf graphql-java-15.0.jar解壓到origin文件夾內(nèi)


2.使用 jd-gui工具
打開graphql-java-15.0.jar

假如我要修改Assert.class,不要在 jd-gui工具里面修改,先ctrl+s保存要修改的文件到某目錄

我保存在跟graphql-java-15.0.jar同目錄下

3.使用文本編輯工具(我用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包:
先進(jìn)入到origin,執(zhí)行打包命令:
jar -cvfm0 graphql-java-15.0-modify.jar META-INF/MANIFEST.MF ./
至此便生成新的jar包

5. 引用修改后的jar包
將jar包放在項(xiàng)目lib,修改pom文件


注意!?。?/p>
原本通過pom引入的jar包,如果有外部包,要手動引入,我們修改后引入的graphql-java-15.0-modify.jar不會自動導(dǎo)入這些外部依賴包

在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-->
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot項(xiàng)目啟動慢的5個優(yōu)化技巧
SpringBoot以其約定優(yōu)于配置的理念和快速開發(fā)的能力,已成為Java生態(tài)中最受歡迎的框架之一,然而,隨著項(xiàng)目規(guī)模的擴(kuò)大,許多開發(fā)者會發(fā)現(xiàn)一個令人頭疼的問題:應(yīng)用啟動時間越來越長,本文將深入分析SpringBoot啟動慢的根本原因,并分享5個經(jīng)過實(shí)戰(zhàn)驗(yàn)證的優(yōu)化技巧2026-03-03
SpringMVC+MyBatis實(shí)現(xiàn)多數(shù)據(jù)源切換
在企業(yè)級應(yīng)用開發(fā)中,經(jīng)常需要處理來自不同數(shù)據(jù)庫的數(shù)據(jù),為了滿足這一需求,我們可以通過配置多個數(shù)據(jù)源來實(shí)現(xiàn)對不同數(shù)據(jù)庫的訪問,下面我們來看看具體實(shí)現(xiàn)吧2025-01-01
SpringCloud微服務(wù) Sentinel 實(shí)戰(zhàn)指南
文章主要介紹了Sentletinel在微服務(wù)中的應(yīng)用及工作原理,涵蓋了流控規(guī)則、熔斷降級、授權(quán)控制等內(nèi)容,強(qiáng)調(diào)了通過合理的限流和降級策略來保護(hù)系統(tǒng)穩(wěn)定運(yùn)行,感興趣的朋友跟隨小編一起看看吧2026-05-05
Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼
這篇文章主要介紹了Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11

