簡單的反編譯class文件並重新編譯的方法
在沒有.java源碼的情況下,如果想修改一個.class文件。可以通過以下步驟實現:
修改前的class文件:
一、反編譯.class文件成.java文件。
1、可以使用Java Decompiler這個工具,直接打開對應的.class文件。然後點擊菜單:File→Save Source,將文件保存成.java文件。如下:
PS:Java Decompiler工具還可以用來反編譯jar包,有時候需要了解下jar包裏的代碼實現,如果開發工具裏看不到,可以直接用Java Decompiler打開jar包。
二、修改該.java文件中的內容。
可以直接用開發工具如MyEclipse,或者文本編輯器的方式對.java文件進行修改。
三、重新編譯成.class文件。
前面2步比較簡單,重點是這一步。重新編譯成.class可以通過javac命令來執行。
1、首先將.java文件放到JDK的bin目錄下,如:“D:\Java\jdk1.6.0_10\bin\”。PS:如果要編譯的java文件中沒有依賴其他類,單獨放就可以。如果有依賴原先項目中的其他類,可以將原先整個項目的classes文件目錄都放進JDK文件夾的lib目錄下。
2、右鍵.java文件→用記事本打開該文件→文件→另存為→檢查.java文件是否是ANSI編碼,如下圖。如果是UTF-8會因為亂碼而編譯報錯,保存成ANSI編碼。
3、開始菜單→運行...→cmd,打開命令行工具,使用javac命令編譯java文件。如:“javac d:/java/jdk1.6.0_10/bin/test/TestDecompile.java”。如果沒有報錯(PS:如果報缺少依賴包的錯誤請看第四步),就是編譯成功了,可以在.java文件所在的目錄找到編譯好的.class文件,如下:
4、可用Java Decompiler工具,查看.class文件中的內容是否正確,如下:
PS:反編譯.class文件並重新編譯的方法到這裏就講完了。
四、編譯時缺少依賴包的解決方法。
1、如果編譯的時候報出依賴的包不存在,如下:
2、可以將缺少的jar包放到JDK目錄下的lib目錄,再重新編譯(如果缺的是自己編寫的class文件,處理方法相同)。
3、如果還是識別不到,則需要配置下環境變量。右鍵我的電腦→屬性→高級系統設置→高級→環境變量→系統變量,在classpath的值最後面加上對應包的路徑,即剛放在lib目錄的路徑,再重新編譯即可。如下:
原文路徑:https://www.cnblogs.com/pcheng/p/6929855.html
簡單的反編譯class文件並重新編譯的方法