簡體   English   中英

不同的類加載器如何解析引用

[英]How different classloaders resolve reference

如果我為我的Java應用程序的3(A,B,C)類創建一個自定義類加載器,並將所有其他加載重定向到默認的bootstrap類加載器。 然后根據JVM規范:“從當前類加載器查詢類的引用並相應地加載(如果需要)”

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

那么如何通過JVM解決這個類發現問題呢?

如果正確實現自定義類加載器,則沒有問題。 所有類加載器都有父級。 對於自定義類加載器,它通常是系統類加載器,即從Java類路徑加載類的加載器。 通常,類加載器首先提供(委托)其父級來加載類,並且只有當父級失敗時它才會嘗試加載該類。 為了實現這一點,自定義類加載器需要實現findClass方法,並且委托將由ClassLoader.loadClass自動完成。

請注意,JVM不僅具有引導類加載器,還具有三個類加載器的層次結構

bootstrap < - extension < - system

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM