使用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編譯時(shí)依賴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文件
注意?。?!
原本通過pom引入的jar包,如果有外部包,要手動(dòng)引入,我們修改后引入的graphql-java-15.0-modify.jar不會(huì)自動(dòng)導(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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中集成Swagger2及簡(jiǎn)單實(shí)用
使用Swagger你只需要按照它的規(guī)范去定義接口及接口相關(guān)的信息,再通過Swagger衍生出來的一系列項(xiàng)目和工具,就可以做到生成各種格式的接口文檔,以及在線接口調(diào)試頁面等等,這篇文章主要介紹了SpringBoot中集成Swagger2,需要的朋友可以參考下2023-06-06spring Retryable注解實(shí)現(xiàn)重試詳解
這篇文章主要介紹了spring Retryable注解實(shí)現(xiàn)重試詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09簡(jiǎn)單了解Mybatis如何實(shí)現(xiàn)SQL防注入
這篇文章主要介紹了簡(jiǎn)單了解Mybatis如何實(shí)現(xiàn)SQL防注入,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Activiti7通過代碼動(dòng)態(tài)生成工作流實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Activiti7通過代碼動(dòng)態(tài)生成工作流實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11idea新建maven項(xiàng)目沒有src目錄的操作方法
這篇文章主要介紹了idea新建maven項(xiàng)目沒有src目錄的兩種操作方法,需要的朋友可以參考下2018-03-03springboot3.X 無法解析parameter參數(shù)問題分析
本文介紹了Spring Boot 3.2.1版本中調(diào)用接口時(shí)出現(xiàn)的參數(shù)解析問題,該錯(cuò)誤是由Spring新版本加強(qiáng)的錯(cuò)誤校驗(yàn)和報(bào)錯(cuò)提示導(dǎo)致的,在Spring 6.1之后,官方要求URL中的傳參必須使用`@PathVariable`聲明用于接收的變量,而不能省略`@RequestParam`注解,感興趣的朋友一起看看吧2025-03-03解決使用@Value(${×××))從properties文件取值的坑
這篇文章主要介紹了解決使用@Value(${×××))從properties文件取值的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java中的static和final關(guān)鍵字的使用詳解
這篇文章主要介紹了Java中的static和final關(guān)鍵字的使用詳解, 當(dāng)方法名前有static,即為static方法,可以方便我們無需創(chuàng)建對(duì)象也可以調(diào)用此方法,靜態(tài)方法比較拉,只可以訪問 靜態(tài)的 屬性/變量/方法,無法訪問非靜態(tài)的這些屬性/變量/方法,需要的朋友可以參考下2024-01-01