我正在爲長時間運行的服務器實例編寫類加載器。如果用戶尚未上傳類定義,則拋出ClassNotFoundException;似乎合理。類加載器異常正在被記憶
問題是這樣的:有三個類(C1,C2和C3)。 C1取決於C2,C2取決於C3。 C1和C2是可分辨的,C3不()。 C1被加載。 C1隨後執行需要C2的動作,因此C2被加載。 C2隨後執行需要C3的動作,所以類加載器試圖加載C3,但無法解決它,並引發異常。現在將C3添加到類路徑中,並重新啓動序列(從原始加載的C1開始)。問題是,C2似乎記得C3無法加載,並且不打擾要求類加載器找到類...它只是重新引發memoized異常。
很明顯,我無法重新加載C1或C2,因爲其他類可能已鏈接到它們(因爲C1已經鏈接到C2)。
我試過拋出不同類型的錯誤,希望班級不要記憶它們。不幸的是,沒有這種運氣。
有沒有辦法阻止加載的類綁定到異常?也就是說,如果第一次沒有成功,我希望類加載器可以繼續嘗試。
謝謝!
http://stackoverflow.com/questions/1457863/what-is-the-difference-between-noclassdeffounderror-and-classnotfoundexception線程可能是有用的。看起來你應該拋出NoClassDefFoundError。 – Osw 2011-01-08 21:43:32