一、背景
最新想要修改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包。