| 變數 | 用途 | 必要性 |
|---|---|---|
| JAVA_HOME | JDK 安裝根目錄,供 Maven/Gradle/Tomcat/IDE 定位 JDK | 強烈建議 |
| PATH | 包含 %JAVA_HOME%\bin,讓 java/javac 等指令全域可用 | 必須 |
| CLASSPATH | 類載入搜尋路徑(含 . 當前目錄、tools.jar/dt.jar) | JDK 1.5+ 可選(建議保留相容) |
變數名: JAVA_HOME
變數值: C:\Program Files\Java\jdk-17 (你的 JDK 安裝路徑,無 bin)
變數名: Path
變數值: 在現有值末尾追加: %JAVA_HOME%\bin
(用分號 ; 分隔,建議置於最前以優先使用)
變數名: CLASSPATH
變數值: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
關鍵細節:
. 代表當前工作目錄,必須保留%JAVA_HOME% 參考變數,未來升級 JDK 只需改一處tools.jar/dt.jar 已移除,此行可省略# ~/.bashrc 或 ~/.zshrc
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar # JDK 8 及以下
# JDK 9+ 可省略 CLASSPATH
執行 source ~/.bashrc 生效。
> java -version
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (build 17.0.8+7)
OpenJDK 64-Bit Server VM (build 17.0.8+7, mixed mode, sharing)
> javac -version
javac 17.0.8
> echo %JAVA_HOME% (Win)
> echo $JAVA_HOME (Linux/Mac)
| 現象 | 原因 | 解決 |
|---|---|---|
java 非內部/外部指令 | PATH 未包含 %JAVA_HOME%\bin | 檢查 PATH 拼寫、分號、重啟終端機 |
| 版本不符 | 多 JDK 共存,PATH 順序錯誤 | 將目標 JDK bin 置於 PATH 最前 |
| CLASSPATH 導致類衝突 | 系統 CLASSPATH 污染專案依賴 | 專案建議不依賴系統 CLASSPATH,用 Maven/Gradle 管理 |
| IDE 無法偵測 JDK | 未設定 JAVA_HOME | 設定 JAVA_HOME 指向 JDK 根目錄(非 JRE) |
.mvn/jvm.config、Gradle java.toolchain、IDE Project SDK,不依賴全域環境FROM eclipse-temurin:17-jdk 內建環境,無需手動配置JAVA_HOME 是基石,PATH 讓指令生效,CLASSPATH 為舊相容保留。新專案建議:設定 JAVA_HOME + PATH,拋棄系統 CLASSPATH,交給構建工具管理依賴。