[英]How Classloader determines which classes it can load?
我正在閱讀Java中的類加載。
假設我們有一個看起來像這樣的類加載器層次結構,我理解First
加載的類不能由Second
加載的類直接訪問(反之亦然)。
Bootstrap
|
System
|
Common
/ \
First Second
我也理解一個類加載器檢查它的父類加載器是否可以加載該類,如果是這種情況,則將加載委托給它的父類。
類加載器如何確定它們是否可以加載某個給定的類?
這取決於類加載器的實現。 但ClassLoader.findClass(String)檢索ClassLoader可以加載的所有類
有許多實現,但最常見的是URLClassLoader ,它從目錄和jar文件加載類。
類加載器檢查CLASSPATH
路徑變量中的所有類(java類文件) 。 如果你的班級在那里找到,它就存在,否則就不存在。
實際上, 您的/src
目錄和所有子目錄(=包)都會被掃描。
類加載器將請求的類名轉換為文件名,然后嘗試從文件系統中查找該名稱的“類文件”。 正如@poitroae所說,它使用CLASSPATH變量(如果設置)作為起始位置。 大多數IDE等都將此擴展為包含項目的工作目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.