「工欲善其事,必先利其器」。JDK (Java Development Kit) 是 Java 開發的基石,包含編譯器 (javac)、運行時 (java)、打包工具 (jar)、診斷工具 (jconsole, jstack, jmap) 及標準類庫。本文詳細說明 JDK 獲取源、安裝步驟、環境變數配置、驗證測試,並介紹主流 IDE 整合要點。
| 來源 | 特點 | 推薦場景 |
|---|---|---|
| Oracle JDK (OTN) | 商業授權、長期支援 (LTS)、效能優化 | 企業生產、需 Oracle 支援合同 |
| Eclipse Temurin (Adoptium) | 開源免費、TCK 驗證、多平台、LTS 版本 | **通用首選**、容器化、CI/CD |
| Amazon Corretto | 免費、長期支援、AWS 優化 | AWS 雲原生部署 |
| Azul Zulu | 免費、商業支援可選、JDK FX 內建 | JavaFX 桌面應用 |
| Red Hat Build of OpenJDK | RHEL 整合、長期支援 | Red Hat 生態 |
下載地址:https://adoptium.net/temurin/releases/ (選擇 LTS: 8, 11, 17, 21)。
.msi → 下一步 → 自訂安裝目錄 (建議 C:\Java\jdk-17,無空格、無中文)。javac)、Source Code (可選)、Public JRE (JDK 9+ 內建,無需勾選)。JAVA_HOME (部分安裝程式),建議手動覆蓋確保正確。Win+S →「編輯系統環境變數」→「環境變數」→「系統變數」:
| 變數名 | 變數值範例 | 說明 |
|---|---|---|
| JAVA_HOME | C:\Java\jdk-17 | 所有 Java 工具/框架尋找 JDK 根目錄的標準鍵 |
| Path | %JAVA_HOME%\bin; (置頂) | 讓 javac/java/mvn/gradle 直接可用 |
| CLASSPATH | .; (或留空) | **現代 JDK 不需要**,舊教程殘留;Maven/Gradle 自動管理依賴 |
**重開** PowerShell/CMD:
> java -version
openjdk version "17.0.10" 2024-01-16 LTS
> javac -version
javac 17.0.10
> jar --version
jar 17.0.10
> where java
C:\Java\jdk-17\bin\java.exe
| IDE | 配置路徑 | 關鍵動作 |
|---|---|---|
| IntelliJ IDEA | File → Project Structure → SDK | + → Add JDK → 選擇 JAVA_HOME 目錄 → 語言等級 17 (Preview) |
| Eclipse | Window → Preferences → Java → Installed JREs | Add → Standard VM → 選擇 JDK 目錄 → 勾選設為默認 |
| NetBeans | Tools → Java Platforms | Add Platform → 選擇 JDK 目錄 → 設為默認 |
| VS Code (Extension Pack for Java) | Settings → java.jdt.ls.java.home | 設為 JAVA_HOME,自動偵測 Maven/Gradle 專案 |
sdk install java 21.0.2-tem、sdk use java 17.0.10-tem。jabba install adopt@1.17.0。actions/setup-java@v4 with distribution: 'temurin'、java-version: '17'。FROM eclipse-temurin:17-jre-alpine (運行)、FROM eclipse-temurin:17-jdk-alpine (構建)。| 現象 | 原因 | 解決 |
|---|---|---|
| 'javac' 不是內部命令 | Path 未含 %JAVA_HOME%\bin | 編輯 Path、重開終端 |
| 版本不符預期 | 多 JDK 共存、Path 順序 | 統一 JAVA_HOME、調整 Path 優先級 |
| IDE 編譯報錯 "release version not supported" | IDE 綁定舊 JDK、語言等級不匹配 | Project Structure 重選 JDK、設定 --release 參數 |
| Docker 構建慢 | 基礎鏡像大、未利用層快取 | 用 alpine 版、分階段構建、.dockerignore |