2012-06-22 137 views
0

我有一個jar文件,我需要做一個小改動。我刪除損壞的類文件並用JAD反編譯它們。但是在我修復它們之後,我需要重新編譯。當我重新編譯我明顯得到錯誤,因爲我只編輯一個文件。但我知道你可以將修改後的類文件注入到jar中。 所以我的問題是:是否有可能迫使java編譯文件,所以我可以重新插入它們?唯一的錯誤是依賴和包沒有找到,但如果我把它放回jar中它會發現它們。強制java重新編譯不良類

+3

不可能。編譯器總是會拒絕生成它不能確保的類型安全的代碼。爲此,它必須提供所有的依賴關係。但假設你可以運行你的JAR,那麼你就有這些依賴關係。爲什麼不把它們放在編譯器的類路徑上? – Jochen

+1

http://stackoverflow.com/questions/946071/re-compile-a-java-class-from-jar?rq=1 – fvu

+0

歡迎Ethan。我不確定fvu是否剛剛發佈了一個鏈接到一個完全相同的副本(至於「強制java編譯器」部分,這是Jochen建議的不可行的),但我認爲你應該可以用它作爲答案。 –

回答

0

您可以使用實現接口和對象組合的方式開發與添加更改相同的類。在它開發自定義的類加載器來卸載舊的類並加載新的。但這很難做到。

+0

這聽起來比從jar中提取類文件,反編譯,改變它,再次編譯它 - 在classpath中更改.jar)並將其放回到.jar文件中聽起來要複雜得多。 –

+0

你有沒有讀過的問題?引用:當我重新編譯時,我明顯得到錯誤,因爲我只編輯一個文件 –

+0

是的,我讀過,但我沒有看到任何理由爲什麼在類路徑中包括.jar文件無助於應對這種情況。 –

相關問題