1. 程式人生 > >簡單的反編譯class文件並重新編譯的方法

簡單的反編譯class文件並重新編譯的方法

編譯報錯 令行 技術 ssp .cn lib cnblogs ron 系統

在沒有.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文件並重新編譯的方法