問題現象
安裝 JDK 1.5 或 1.6 後,已配置環境變數,但在命令列輸入 `java -version` 仍顯示 1.4 版本。
根本原因
系統 `Path` 環境變數中,舊版 Java 執行檔路徑 (如 `C:\Program Files\Java\j2re1.4\bin`) 位於新版 JDK `bin` 目錄**之前**。Windows 依序搜尋 `Path` 目錄,找到第一個 `java.exe` 即執行,導致舊版本被優先呼叫。
標準解決方案:正確配置環境變數
- 右鍵「此電腦」→「內容」→「進階系統設定」→「環境變數」。
- 系統變數 → 新增:
- 變數名:`JAVA_HOME`
- 變數值:`C:\Program Files\Java\jdk1.8.0_xxx` (實際安裝路徑)
- 系統變數 → 編輯 `Path`:
- 在**最前面**新增 `%JAVA_HOME%\bin` (或 `%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin`)。
- **刪除或移至末尾**舊版 Java 路徑 (如 `C:\Program Files\Java\jre7\bin` 等)。
- 系統變數 → 新增 `CLASSPATH` (可選,現代 Java 通常不需要):
- 變數值:`.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar`
- 開啟**新的**命令提示字元視窗**,輸入 `java -version` 驗證。
進階排查技巧
- `where java`:顯示系統實際會執行的 `java.exe` 完整路徑與順序,直觀定位衝突。
- 檢查註冊表:`HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment` 當前版本鍵值是否正確。
- 移除舊版本:控制台 → 程式集 → 解除安裝舊版 JRE/JDK,最徹底。
- IDE 設定:Eclipse/IntelliJ 內建 JRE 設定需同步指向新版 JDK。
最佳實踐建議
- **統一使用 `JAVA_HOME` 變數**,`Path` 只引用 `%JAVA_HOME%\bin`,升級版本時只需修改 `JAVA_HOME`。
- **安裝時取消勾選「安裝公共 JRE」**,避免產生額外的 `java.exe` 複本。
- **使用版本管理工具** (如 SDKMAN!、jEnv、Chocolatey) 切換版本,自動維護環境變數。