Ubuntu 官方倉庫提供 OpenJDK 及 Eclipse 打包,但歷史專案常需 Oracle JDK 6 (舊版本已 EOL、安全風險高)。本文記錄 Ubuntu 下安裝 Oracle JDK 6 (或 OpenJDK 6/8/11/17)、配置 update-alternatives 切換預設 Java、安裝 Eclipse 並綁定正確 JDK 的完整流程,新專案請直接使用 OpenJDK 11/17 LTS 版本。
⚠️ 警告: Oracle JDK 6 於 2013 年結束公開更新,無安全補丁,生產環境極不推薦。僅限離線/隔離環境維護舊系統。請優先評估遷移至 OpenJDK 8/11/17 LTS。
jdk-6u45-linux-x64.bin (Oracle 官網需登錄賬號,或可信鏡像站)chmod +x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin
# 解壓至當前目錄 jdk1.6.0_45
sudo mkdir -p /usr/lib/jvm
sudo mv jdk1.6.0_45 /usr/lib/jvm/java-6-oracle
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-6-oracle/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-6-oracle/bin/javac 100
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/java-6-oracle/bin/javaws 100
sudo update-alternatives --config java
# 選擇編號對應 java-6-oracle
sudo update-alternatives --config javac
# Ubuntu 20.04 / 22.04 / 24.04
sudo apt update
sudo apt install openjdk-17-jdk-headless # 或 openjdk-11-jdk-headless
# 驗證
java -version
# openjdk version "17.0.10" 2024-01-16
# OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04)
# OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04, mixed mode, sharing)
OpenJDK 通過 update-alternatives 自動註冊,通常無需手動配置。
sudo vim /etc/environment
# 追加 (按實際路徑修改)
JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
CLASSPATH=".:$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
# 保存重啟或 source /etc/environment (需重新登錄 Shell 生效)
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
sudo apt install eclipse
# 啟動後 Help → About → Configuration Details 驗證 JDK 路徑
eclipse-inst-jre-linux64.tar.gz (Eclipse Installer 含 JRE)./eclipse-instEclipse IDE for Enterprise Java and Web Developers/opt/eclipse 或 ~/eclipse編輯 eclipse.ini (安裝目錄或 ~/.eclipse/.../eclipse.ini),在 -vmargs 前插入:
-vm
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
# 必須是單獨兩行,-vm 後跟 java 可執行文件絕對路徑
或設置環境變量啟動:
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 ./eclipse
Ubuntu apt 版 Eclipse 讀取 /etc/eclipse/java_home 與 /etc/jvm 確定 JDK:
echo "/usr/lib/jvm/java-17-openjdk-amd64" | sudo tee /etc/eclipse/java_home
echo "/usr/lib/jvm/java-17-openjdk-amd64" | sudo tee -a /etc/jvm
重啟 Eclipse,Help → About Eclipse IDE → Configuration Details 搜尋 java.home 驗證指向正確 JDK。
# 查看已註冊版本
update-alternatives --list java
# 手動切換
sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac
# 專案級隔離:使用 SDKMAN! (強烈推薦)
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 17.0.10-tem
sdk install java 21.0.2-tem
sdk use java 17.0.10-tem # 當前 Shell 生效
sdk default java 17.0.10-tem # 全域預設
| 現象 | 原因 | 解決 |
|---|---|---|
Eclipse 啟動報 JVM terminated. Exit code=13 | 32/64 位不匹配 (Eclipse 64位需 64位 JDK) | 確保 Eclipse、JDK 位數一致,檢查 eclipse.ini -vm 指向 |
專案編譯錯誤 Unsupported class file major version 61 | JDK 版本低於類文件版本 (JDK 17 編譯需 JDK 17+ 運行) | 專案 Properties → Java Compiler → Compiler compliance level 匹配 JDK |
Maven 編譯失敗 JAVA_HOME not set | Maven 讀取環境變量 JAVA_HOME 為空 | 設置 /etc/environment 或 ~/.mavenrc export JAVA_HOME |
update-alternatives 提示 alternative path doesn't exist | 手動移動 JDK 目錄未更新 alternatives | 重新 --install 或 --remove 後再 --install |
Ubuntu 下 Java 環境配置核心是 update-alternatives 管理多版本、JAVA_HOME 明確指向、Eclipse -vm 綁定 JDK。拒絕手動修改系統軟鏈接,擁抱 SDKMAN! 實現專案級 JDK 隔離,讓歷史專案與現代開發和諧共存。