JDK 配置是 Java 學習的第一道關卡,也是新手最容易卡關的地方。本文針對 Windows 環境 (Win10/11、Server 2019+),以 JDK 17/21 LTS 版本為例,提供標準化安裝配置流程、環境變數原理解析、常見錯誤診斷與驗證腳本。
| 來源 | 授權 | 特點 | 推薦場景 |
|---|---|---|---|
| Eclipse Temurin | GPL v2 + CE | 開源免費、無商業使用限制、多平台、定期更新 | 企業生產、個人學習、容器基礎映像 |
| Oracle JDK | OTN / NFTC | 官方原廠、商業支援選項、Java 17+ 免費商用 (NFTC) | 需 Oracle 支援合約、特定認證環境 |
| Azul Zulu | GPL v2 / 商業 | 高效能編譯器、ARM 優化、長期支援 | 高效能計算、嵌入式、ARM 伺服器 |
| GraalVM | GPL v2 / 商業 | 多語言、原生映像 (AOT)、高效能 | 微服務、Serverless、多語言專案 |
OpenJDK21U-jdk_x64_windows_hotspot_21.x.x.msiC:\Java\jdk-21 (避免空格、中文、Program Files 權限問題)JAVA_HOME| 變數 | 用途 | 標準值 | 必要性 |
|---|---|---|---|
JAVA_HOME | JDK 安裝根目錄,Maven/Gradle/IDE/伺服器尋找 JDK 依賴此變數 | C:\Java\jdk-21 | 必須 |
PATH | 系統搜尋可執行檔路徑,需包含 %JAVA_HOME%\bin 以在任意目錄執行 java/javac | %JAVA_HOME%\bin (置於最前) | 必須 |
CLASSPATH | 類別搜尋路徑,現代開發不建議設定系統級 CLASSPATH | 不設定或 . | 選擇性 (舊專案相容) |
JAVA_HOMEC:\Java\jdk-21 (您的實際安裝路徑)Path → 編輯 → 新增 → %JAVA_HOME%\bin → 上移至最頂端$javaHome = "C:\Java\jdk-21"
[Environment]::SetEnvironmentVariable("JAVA_HOME", $javaHome, "Machine")
$path = [Environment]::GetEnvironmentVariable("Path", "Machine")
if (-not $path.Split(';').Contains("%JAVA_HOME%\bin")) {
[Environment]::SetEnvironmentVariable("Path", "%JAVA_HOME%\bin;" + $path, "Machine")
}
Write-Host "請重新開啟 PowerShell 後執行 java -version 驗證"
> java -version
openjdk version "21.0.2" 2024-01-16
OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13)
OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13, mixed mode, sharing)
> javac -version
javac 21.0.2
> echo %JAVA_HOME%
C:\Java\jdk-21
> where java
C:\Java\jdk-21\bin\java.exe
C:\Windows\System32\java.exe <-- 若出現此行,說明系統目錄有殘留 java.exe,需確保 %JAVA_HOME%\bin 優先
| 錯誤現象 | 原因分析 | 解決方案 |
|---|---|---|
'javac' 不是內部或外部命令 | PATH 未包含 %JAVA_HOME%\bin 或變數未生效 | 檢查 PATH 順序、重開終端機、用 where javac 確認路徑 |
Error: JAVA_HOME is not defined (Maven/Gradle) | 系統變數缺少 JAVA_HOME 或路徑錯誤 | 補齊 JAVA_HOME,指向 JDK 根目錄 (含 bin、lib、include) |
Unsupported class file major version 65 | 編譯版本 (JDK 21) 高於運行版本 (JDK 11) | 統一 JDK 版本、或設定 maven.compiler.release=11 |
| 中文路徑導致編譯失敗 | 安裝路徑含中文/空格 | 重裝至純英文路徑 (如 C:\Java\jdk-21) |
| 多 JDK 版本衝突 | PATH 中有多個 JDK bin 目錄 | 只保留一個 %JAVA_HOME%\bin,專案級用工具鏈管理 |
| IDE 偵測不到 JDK | IDE 讀取 JAVA_HOME 失敗 | IDE 設定中手動指向 JDK 根目錄、重啟 IDE |
推薦工具:
sdk install java 21.0.2-tem、sdk use java 17.0.10-temjabba install adopt@1.21.0choco install temurin21 / Scoop scoop install temurin21-jdk專案根目錄建立 .java-version 或 .sdkmanrc,自動切換版本,徹底解決多專案版本衝突。
> mkdir C:\JavaWork\HelloWorld
> cd C:\JavaWork\HelloWorld
> notepad HelloWorld.java
輸入代碼:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java " + System.getProperty("java.version") + "!");
}
}
> javac HelloWorld.java
> dir HelloWorld.class <-- 確認產生 class 檔
> java HelloWorld
Hello, Java 21.0.2!
JDK 配置核心在於:正確安裝路徑 → 設定 JAVA_HOME → PATH 優先加入 %JAVA_HOME%\bin → 重開終端機驗證。避免設定系統 CLASSPATH,改用建構工具 (Maven/Gradle) 管理依賴。掌握 where java、java -version 診斷技巧,多版本環境引入 SDKMAN/Jabba 統一管理。配置無誤,才能專注於 Java 語言本身的學習與開發。