2013-07-26 52 views
1

如果我爲我的Java應用程序的3(A,B,C)類創建自定義類加載器,並將所有其他加載重定向到默認引導類加載器。然後根據JVM規範: 「從目前的類加載器查詢類的引用並相應地加載(如果需要)」不同的類加載器如何解決引用

現在,如果我嘗試創建類D的對象(其類加載器引用是引導「類」類)(類加載器引用是自定義加載器),然後自定義加載器沒有任何方法來找到D.class文件的路徑(比如我從互聯網/其他選擇A,B,C在這種情況下,CLASSPATH在自定義加載程序中不同)。

那麼這個類的查找問題會如何被JVM解決?

回答

3

如果您正確實施您的自定義類加載器,則不會有任何問題。所有類加載器都有一個父類。對於自定義類加載器,它通常是系統類加載器,它是從Java類路徑加載類的加載器。通常,類加載器首先提供(委託)它的父類來加載一個類,並且只有當父類失敗時它纔會嘗試加載類。爲了做到這一點,自定義類加載器需要實現findClass方法,委託將由ClassLoader.loadClass自動完成。

注意,JVM不僅引導類加載器,但三個類加載器

引導<層次 - 延伸< - 系統

+0

(也可能是值得注意的是,有時'null'被用來代表bootstrap類加載器,有時也是系統類加載器 - 它們在Java 1.0/1.1中是一樣的。) –

相關問題