在 Ubuntu 系統上安裝配置 JDK 是 Java 開發的第一步。本文提供 Oracle JDK 與 OpenJDK 兩種安裝路徑,並詳解環境變量持久化配置、多版本切換與驗證方法。
# 1. 更新包索引 sudo apt update # 2. 搜索可用版本 apt search openjdk | grep -E '^openjdk-[0-9]+-jdk/' # 3. 安裝 LTS 版本(如 17、21) sudo apt install openjdk-17-jdk # 或 openjdk-21-jdk # 4. 驗證 java -version javac -version
/usr/lib/jvm/java-17-openjdk-amd64# 1. 下載 .tar.gz(從 Oracle 官網或第三方鏡像) # 假設文件:jdk-17_linux-x64_bin.tar.gz # 2. 解壓至 /opt 或 /usr/lib/jvm sudo mkdir -p /usr/lib/jvm sudo tar -xzf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvm # 3. 設置環境變量(見下文通用配置)
Oracle JDK 17+ 採用 NFTC(Oracle No-Fee Terms and Conditions):開發/測試免費,生產商業用途需購買訂閱。生產環境建議使用 OpenJDK 或 Eclipse Temurin、Azul Zulu 等免費構建版。
# 編輯 /etc/profile.d/jdk.sh(推薦:模塊化,不污染 /etc/profile) sudo vim /etc/profile.d/jdk.sh # 寫入以下內容(根據實際安裝路徑調整) export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export JRE_HOME=$JAVA_HOME export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib # 保存並生效 source /etc/profile.d/jdk.sh
vim ~/.bashrc # 追加相同 export 行 source ~/.bashrc
# 查看已安裝版本 ls /usr/lib/jvm/ # 使用 update-alternatives 管理(OpenJDK 自動註冊) sudo update-alternatives --config java sudo update-alternatives --config javac # 手動註冊 Oracle JDK sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 100 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 100
java -version # 輸出示例: # openjdk version "17.0.8" 2023-07-18 # OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-1ubuntu122.04) # OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-1ubuntu122.04, mixed mode, sharing) javac -version # javac 17.0.8 echo $JAVA_HOME # /usr/lib/jvm/java-17-openjdk-amd64
| 問題 | 原因與解決 |
|---|---|
command not found | PATH 未生效 → source /etc/profile.d/jdk.sh 或重新登錄 |
| 版本不符 | 多版本衝突 → update-alternatives --config java 選擇正確版本 |
| 權限不足 | 目錄權限 → sudo chmod -R 755 /usr/lib/jvm/ |
| CLASSPATH 找不到類 | 建議不設置 CLASSPATH,現代構建工具自動管理依賴 |
# Dockerfile 片段 FROM ubuntu:22.04 RUN apt update && apt install -y openjdk-17-jdk ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 ENV PATH=$JAVA_HOME/bin:$PATH
/etc/profile.d/jdk.sh,模塊化管理update-alternatives 切換版本,避免手動改 PATHCLASSPATH 設置,現代項目用 Maven/Gradle/etc/profile 直接追加,難以維護與協同