Java|Path 與 Classpath

Photo by Irina Babina on Pexels



Path
讓 實體作業系統(如Windows)找可執行指令的地方
例如:Windows的.exe.bat等,Linux具執行權限的檔案

ClassPath
讓 JVM 找可執行指令的地方(.class
實際上是給應用程式類別載入器(AppClassLoader)使用的資訊


PATH

在cmd模式下:
  1. 可使用 %PATH% 指令來查看作業系統現有哪些PATH路徑
  2. 程式執行時,會依序尋找適合的執行檔,先找到先使用
  3. 如果只是要在 當下使用 該路徑,可使用 SET PATH = 完整路徑 指令來設定,
    該設定在cmd關閉後隨即消失
  4. 如果是要 永久使用 的路徑,需至控制台設定 使用者環境變數系統環境變數
    • 使用者環境變數:僅於該使用者有效
    • 系統環境變數:每個登入的使用者皆有效

使用時的採納順序:
  1. SET PATH指令
  2. 系統環境變數
  3. 使用者環境變數


CLASSPATH

在cmd模式下:
  1. 若未特別指定路徑,則編譯器和JVM會採用預設路徑
    → 在當前目錄資料夾中尋找.class
  2. 如要指定路徑,需使用 -cp(-classpath)來指定
    例如:資料夾 workspace 中的 HelloWorld.java 中若調用了資料夾 classes 的 Message.java,則:
    1) 編譯javac -cp c:\classes HelloWorld.java
        *要另外指定被調用的資料夾
    2) 執行:java -cp c:\classes;c:\workspaceHelloWorld
        因JVM只會從被指定的資料夾找執行檔
  3. 如果只是要 一次性使用 該路徑,使用 -cp 指令指定
  4. 如果要在 該次開啟cmd的過程中使用 該路徑,使用 SET CLASSPATH = 完整路徑
    該設定將在cmd關閉後消失
    例如:SET CLASSPATH = C:\classes;c:\lib\abc.jar;c:\lib\xyz.jar
  5. 如果是要 永久使用 該路徑,需在 使用者環境變數系統環境變數 中設定
    • 使用者環境變數:僅於該使用者有效
    • 系統環境變數:每個登入的使用者皆有效

使用時的採納順序:
  1. -cp 或 -classpath 指令
  2. SET CLASSPATH 指令
  3. 系統環境變數
  4. 使用者環境變數


- References -





留言