IDEA修改jar包中class文件后重新生成jar包


一、背景

最新想要修改rebeyond大佬的冰蠍項目,特地去網上搜索如何修改jar包中的源碼再替換回去的方法,但由於現在的一些文章寫的太爛,導致走了很多彎路,因此寫下這篇快速使用IDEA修改源碼並替換class文件再打成jar包的文章。

二、具體步驟

1、下載冰蠍項目jar包,放入D盤目錄下:

2、使用IDEA新建一個maven項目,這里就叫test_123:

3、打開File -> Project Structure:

在Libraries中加入剛剛下載的jar包:

加載完如下,點擊Apply和OK即可。

此時整個項目結構如下:

4、假設現在想要修改net.rebeyond.behinder.core包中的ShellService類,就需要在我們的項目中創建一個同名的包以及同名的ShellService類,然后將jar中的ShellService類的內容復制過去:

5、看到復制過去之后,代碼中有報錯,此時就需要我們自己修改這些報錯。

這里我遇到的大致有兩類報錯:

  • 一類是java版本的報錯,整個項目使用的jdk版本是1.5,但某些函數只能在jdk1.8中使用

    此時就需要修改項目的編碼,這里主要也是在File->Project Structure -> Modules中調整Language Level為jdk 8:

    然后在Project一項,也修改成jdk8:

    在File -> Settings中找到Java Compiler項,修改編譯環境為1.8:

  • 另一類問題是通過class文件反編譯得到的java源碼中存在變量重復聲明的問題:

    這里只需要刪除重復多余的聲明即可。

6.修改完錯誤之后,即可編譯項目:

7.編譯完成之后,在target目錄會生成ShellService.class文件:

8、解壓jar包,然后用剛剛生成的ShellService.class替換掉jar包解壓之后文件夾內net/rebeyond/behinder/core目錄下的ShellService.class:

9、回到D:\Test\Behinder_v3.0_Beta_6_win (1)目錄下,進入cmd窗口,使用下面的命令重新生成jar包:

jar cfm test.jar Behinder_v3.0_Beta6_win\META-INF\MANIFEST.MF -C Behinder_v3.0_Beta6_win\ .

執行完會在當前目錄生成一個test.jar的文件,該jar包即為修改源碼並替換class文件之后的jar包。

三、參考

1、https://www.javatt.com/p/83085


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM