程序員難免要借鑒其他java工程的代碼。可有時只能拿到.calss文件,jar包或者war包,這個時候要求程序員能熟練的將這些類型文件反編譯為Java代碼並形成可編譯運行的項目。本文介紹的反編譯工具是JD-GUI。反編譯的jar包是一個springboot項目的jar包。
反編譯工具使用
下載JD-GUI后解壓,無需安裝,雙擊打開exe文件。
open file選擇要反編譯的jar包,
打開,左側classes->com目錄下就是java源代碼文件
點擊想查看的文件,可以看到源代碼,點擊有下划線的變量符號,會自動跳轉到定義處,也可以搜索變量名,但是搜索時會比較慢,需要多等一會。
獲得源代碼
這樣只能查看代碼,要編譯,修改,運行代碼,就要把所有代碼提取出,形成工程項目。點擊File->save all source
源代碼會保存為壓縮包
壓縮包解壓是三個文件夾
java代碼都在BOOT-INF/calsses/com里
將classes目錄里的所有東西一起拷貝到建立好的空的springboot項目中編譯運行,目錄層次要拷貝正確。
獲得項目配置文件
項目配置文件application.properties和pom.xm里的內容復制反編譯解壓目錄同名文件里的內容粘貼進來。
獲得項目依賴的jar包
現在項目代碼有了,配置文件也有,但是一般還不能成功運行項目。因為反編譯的pom不是特別准確,可能很多項目需要的包,pom里沒有import。或者原項目用的一些jar包本來就是手工導入項目,不是pom統一管理的。
最好的辦法就是從被反編譯的jar包里提取所有需要import的jar包。
將test01.jar后綴名改成zip test01.zip,解壓到當前文件夾。
解壓后的BOOT-INF\lib里有本項目需要的全部jar包,將所有jar包通過add external jar的方式加到項目中。
運行項目
到這里距離成功運行項目很近了,因為反編譯的代碼也不是特別精確,有些代碼需要人工分析修改,或者修改不成功只能注釋掉,才能通過編譯。運行時有些包可能報錯,主要是pom引入的包和手工導入的包沖突,或者有些包版本不對,也需要逐一解決。當然,有些反編譯項目直接正確運行不報錯誤,這樣當然最好了。