類加載器是分層結構的。子類加載器要求父類加載類,如果父類無法通過維護唯一性來加載類。所有父類加載的類都可以被子類加載器訪問,但相反的是不正確的。在我的腦海裏出現了問題:孩子要求父母加載課程,但由於某些問題,父母無法加載,因此孩子將其加載到JVM中。在稍後的某個時間點,父級需要該類,明顯的父級無法查看JVM中加載了哪些子類加載器的類,那麼父級是否也會將該類加載到JVM中?同一班的獨特性會怎樣?問題如何解決?任何好的指針,將不勝感激。Java中的類加載器
2
A
回答
2
父母無法加載,那麼孩子將其加載在JVM
父母可能不能夠由於類加載到兩方面的原因:類實體上沒有發現或者預期某些暫時性失敗。在前一種情況下,ClassLoader
將拋出一個ClassNotFoundException
,這將永遠不會改變。在後者中,會從父項中拋出不同的異常,從而中斷子類加載器。所以這種情況絕不會發生。
同一類的獨特性會發生什麼?
在此情況下,但在技術上這是可能的,尤其是在複雜的類加載器層次的應用服務器。基本上兩個類加載器可以加載相同的類,它們是不兼容的(您可以獲得ClassCastException
)。
0
在你的情況下,JVM中將會有兩個具有相同名稱但不同Class
實例的類。這些類在所有方面都被認爲是不同的。當您嘗試分配引用「跨類加載器」,那麼你會得到一個錯誤時拋出像
Cannot cast class Foo to class Foo
這不是一個理論問題 - 這種例外的是看到飄飛在Java EE/EJB域。
0
的類是平等的必須是在等於以下所有: 1.類的名稱應該是包裝的相同 2.名稱應該是加載類相同 3.類加載器必須是相同的。
所以沒有被相同的classLoader加載的類不是同一個類! 通過這種方式,您可以在同一個應用程序服務器中導入兩個不同版本的jar,這由不同的classLoaders完成。
希望它有幫助...
相關問題
- 1. java類加載器
- 2. 類加載器中的Java死鎖
- 3. java動態類加載器
- 4. java安全類加載器
- 5. Java類加載器動態
- 6. Java類加載器混淆
- 7. Java加密存儲器類加載器
- 8. Java類加載器:爲什麼先搜索父類加載器?
- 9. Java類加載器默認類加載器
- 10. Java類加載器:加載兩次相同的類
- 11. Java子類加載器覆蓋父類
- 12. 負載類與Java類加載器通過類的forName方法
- 13. Java類加載
- 14. Java類加載 - 哪個類加載器和/或類導致加載?
- 15. Java編譯器API類加載器
- 16. 加載自定義類加載器以加載java中傳輸的字節[]
- 17. 的Java鑄造/類加載器發出
- 18. Java類加載器的複雜性
- 19. 的Java類加載器石英
- 20. 在Java 7中加載KeyStore泄漏類加載器
- 21. 通過java類加載器加載的類覆蓋現有的類
- 22. 跨類加載器的類加載
- 23. JVM中的類加載器
- 24. 使用由Java加載的庫引導類加載器
- 25. 在Ruby中加載Url類加載器
- 26. java如何識別類加載器?
- 27. Java這個類加載器vs classForName
- 28. Java類加載器代表團
- 29. 如何設置java類加載器PARENT_LAST
- 30. Java類加載器安全處理