類路徑意味著搜尋的工作方式
類路徑的目的是告訴 JVM 在哪裡查詢類和其他資源。類路徑和搜尋過程的含義是交織在一起的。
類路徑是搜尋路徑的一種形式,它指定查詢資源的位置序列。在標準類路徑中,這些位置是主機檔案系統中的目錄,JAR 檔案或 ZIP 檔案。在每種情況下,該位置都是將被搜尋的名稱空間的根。
在類路徑上搜尋類的標準過程如下:
-
將類名對映到相對類檔案路徑名
RP
。類別名稱到類檔名的對映在別處描述。 -
對於類路徑中的每個條目
E
:- 如果條目是檔案系統目錄:
- 相對於
E
解析RP
,得到絕對路徑名AP
。 - 測試
AP
是否是現有檔案的路徑。 - 如果是,請從該檔案載入該類
- 相對於
- 如果條目是 JAR 或 ZIP 檔案:
- 在 JAR / ZIP 檔案索引中查詢
RP
。 - 如果存在相應的 JAR / ZIP 檔案條目,請從該條目載入該類。
- 在 JAR / ZIP 檔案索引中查詢
- 如果條目是檔案系統目錄:
在類路徑上搜尋資源的過程取決於資源路徑是絕對路徑還是相對路徑。對於絕對資源路徑,過程如上所述。對於使用 Class.getResource
或 Class.getResourceAsStream
解析的相對資源路徑,在搜尋之前會先新增類包的路徑。
(注意這些是標準 Java 類載入器實現的過程。自定義類載入器可能以不同方式執行搜尋。)