首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 類別載入機制深度解析:Classpath、Path 與載入順序全圖解

     編輯:Java 程式設計入門

核心概念釐清

  • 編譯單元:單一 .java 檔案,最多一個 public 類別,檔名須與該類別同名。
  • Path:作業系統用來尋找可執行檔(如 javac.exe、java.exe)的目錄清單。
  • Classpath:JVM 用來尋找 .class 檔案的目錄/封裝檔清單。

標準目錄(無需加入 Classpath)

JDK 內建目錄(如 jre/lib/rt.jar、jre/classes/)會被自動搜尋,開發者不應將自訂類別放入其中,避免升級 JDK 時遺失。

類別載入搜尋順序

  1. 標準目錄(Bootstrap/Extension)
  2. 當前工作目錄(.)
  3. Classpath 環境變數或 -classpath 指定路徑
  4. 套件宣告路徑(僅在 Classpath 指定的根目錄下遞迴搜尋)

實務操作指令

# 編譯時指定 classpath
javac -classpath .;C:/lib/mylib.jar MyClass.java

# 執行時指定 classpath (cp 為縮寫)
java -cp .;C:/lib/mylib.jar MyClass

關鍵提醒:使用 -classpath 或 -cp 會完全覆蓋 環境變數 CLASSPATH,若需保留當前目錄搜尋,必須顯式加入 .。

常見新手誤區

  • 混淆 Path 與 Classpath:前者給 OS 找工具,後者給 JVM 找類別。
  • 將類別檔直接丟進 jre/classes:升級 JDK 即消失,違反模組化原則。
  • 忽略套件目錄結構:package com.demo; 的類別必須置於 com/demo/ 子目錄下。

補充:JDK 1.2+ 雙親委派模型

雖原文未詳述,但現代 JVM 採用雙親委派:子類別載入器先委派父載入器嘗試載入,失敗才自行載入。這確保核心類別(java.lang.*)不被惡意覆寫,也是安全機制基石。

徹底理解類別載入路徑與順序,是從「能跑」進階到「可控、可維運」的關鍵門檻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved