2011-12-08 26 views
4

我正在尋找一個整潔的方式,從引導類路徑,rt.jar覆蓋類。 原因是OpenJDK7錯誤http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7104625重寫單班從rt.jar中

對於這個bug修復的方法是sun.awt.X11.XComponentPeer一個微不足道的(見鏈接的郵件列表後)的變化。所以我在想,如果有一個簡單的方法來重寫我的類路徑僅這一個受影響的類,而無需重新包裝/重建的rt.jar(所以修復不輸於OpenJDK的下一次自動更新)。

理想的情況下,它也將影響到Eclipse中......

我認爲java -Djava.system.class.loader=myClassLoader將工作?有沒有其他方式來覆蓋這樣一個「修補程序」的單個類? (注:在我自己的代碼不使用,但在內心用Java AWT代碼)

回答

9

可以使用虛擬機參數-Xbootclasspath/p預先將自己的JAR文件與修補類一起引導到引導類路徑。

1

我相信這樣做的唯一支持的方式是通過更換所需的* .class文件「補丁」 rt.jar中。 7-Zip可以幫助你輕鬆做到這一點。

這是甲骨文究竟是如何提供自己的雙解析錯誤修正與他們FPUpdater工具,它基本上是一個腳本,做了眼前這個。 (Some history

0

我覺得@ziesemer是正確的,但你可以使用類加載器來替換有問題的類時,你的應用程序是引導。如果你不想擔心你下面的JDK更新,這可能會更清潔,但是你必須將這個引導類加載器代碼粘貼到你正在使用的每個應用程序中。

1

我想你可以嘗試使用javaagent 你必須攔截事件,當JVM加載系統類,並將其交換到你的