常見錯誤現象
javac 正常但 java 报错 Error: Could not find or load main class
- IDE 能編譯執行,CMD 下
java -version 卻失敗
- 安裝多版本 JDK 導致版本衝突
正確配置步驟 (Windows)
- 設定 JAVA_HOME (系統變數)
- 變數名:
JAVA_HOME
- 變數值:
C:\Program Files\Java\jdk-17 (安裝根目錄,非 bin 目錄)
- 編輯 Path (系統變數)
- 新增
%JAVA_HOME%\bin
- 建議置於最前面,優先使用該版本
- 驗證
cmd> java -version
java version "17.0.8" 2023-07-18 LTS
cmd> javac -version
javac 17.0.8
cmd> echo %JAVA_HOME%
C:\Program Files\Java\jdk-17
關鍵點解析
- 系統變數 vs 使用者變數:JDK 必須配在系統變數,服務/容器/其他用戶才能見到。
- 不要把
CLASSPATH 設為 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar:現代 Java (1.5+) 不需要,反而干擾模組化專案。
- JRE 獨立安裝:JDK 已內含 JRE,無需另裝;若必須裝 JRE,其
bin 也要加入 Path。
Linux/macOS 設定
# ~/.bashrc 或 ~/.zshrc
export JAVA_HOME=$(/usr/libexec/java_home -v 17) # macOS
# 或 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk # Linux
export PATH=$JAVA_HOME/bin:$PATH
多版本切換技巧
- Windows:修改
JAVA_HOME 指向不同目錄,重開 CMD 生效。
- Linux/macOS:使用
sdkman、jenv 或 alternatives 管理。
- IDE 專案級設定:在 IDE 設定專案 SDK,不依賴系統環境變數。
故障排查清單
- 確認
JAVA_HOME 指向 JDK 根目錄 (含 bin、lib、include 目錄)。
- Path 中
%JAVA_HOME%\bin 只出現一次,且在其他 Java 路徑之前。
- 重開終端機/IDE 讓環境變數生效。
- 檢查是否有殘留的舊版 Java 路徑在 Path 中。