2013-07-30 82 views

回答

7

我用JD-GUI反編譯的.jar的,這有導出所有反編譯的類的選項。如果你正在反編譯的.jar沒有被混淆,那麼這個源代碼應該是可重新編譯的(否則你需要通過字節碼編輯來解決它)。

一旦你提取了這些類,你需要確保在編譯時使用-CP參數指向.;MyJar.jar進行編譯,以便在編譯時可以找到.jar中的依賴關係。

重新編譯並生成新的.class文件後,用7z打開.jar文件,然後用新文件替換舊的.class文件。你可以使用命令行jar工具來完成這一步,但7z使它更容易。再一次,如果jar被混淆了,並且類文件只有區分大小寫的區別,你可能需要使用Linux重新插入.class文件。 (可能在Windows上可能,但我從來沒有深入研究它)。


我以前反編譯這個Java程序添加一個命令行界面,你也許可以找到註釋中的鏈接;

http://ninjacave.com/jarsplice

+0

謝謝。現在我完成了一半。我試圖在configurator.jar中編輯一個特定的java文件。我沒有編輯文件。 – user2635337

+0

然後將類路徑設置爲d:\ project \ configurator.jar。我試圖使用命令提示符在Windows中編譯Java。但是,獲得「包不存在錯誤」。我懷疑java程序不能導入這個包。 (java代碼 - 導入de.tu_berlin.aio.cams.configuration.CamsLogger.LogOperator;)和(錯誤是 - 包CamsLogger不存在)。我再次檢查了這一點,包裝存在於上述路徑中。在設置課程路線時我犯過什麼錯誤嗎?請幫忙。 – user2635337

+0

如果你的jar有任何依賴關係,你將需要將它們包含在類路徑中。 – Robadob

1

然後有很多免費的實用程序可用,如WinZip,7-ZIP,你可以使用它們。

在打開jar文件之前,只需將jar的擴展名更改爲zip文件,然後提取您要編輯的特定類文件,然後使用任何反編譯器對其進行反編譯,進行更改,然後將其編譯回去,最後再放回在zip文件中。

希望它有幫助。

感謝