在 RedHat 系列系統上手動部署 Oracle JDK (或 OpenJDK) 是 Java 應用基礎設施的核心技能。本文以 JDK 1.6 為例 (邏輯通用於 8/11/17/21),完整記錄下載、解壓、環境變量持久化、alternatives 註冊與多版本共存驗證流程。
jdk-6u20-linux-i586.bin (自解壓二進制)mkdir -p /opt/java
cp jdk-6u20-linux-i586.bin /opt/java/
cd /opt/java
chmod +x jdk-6u20-linux-i586.bin
./jdk-6u20-linux-i586.bin
# 自動解壓至 jdk1.6.0_20/
若為 .tar.gz 封裝:
tar xzf jdk-17_linux-x64_bin.tar.gz -C /opt/java/
/etc/profile.d/java.sh 推薦)cat > /etc/profile.d/java.sh << 'EOF'
export JAVA_HOME=/opt/java/jdk1.6.0_20
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
EOF
chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
~/.bashrc / ~/.bash_profile)cat >> ~/.bashrc << 'EOF'
export JAVA_HOME=/opt/java/jdk1.6.0_20
export PATH=$JAVA_HOME/bin:$PATH
EOF
source ~/.bashrc
export JAVA_HOME=/opt/java/jdk1.6.0_20
export PATH=$JAVA_HOME/bin:$PATH
# 註冊 java
alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_20/bin/java 180060
# 註冊 javac
alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_20/bin/javac 180060
# 註冊 jar
alternatives --install /usr/bin/jar jar /opt/java/jdk1.6.0_20/bin/jar 180060
# 註冊 javadoc 等其他工具 (可選)
alternatives --install /usr/bin/javadoc javadoc /opt/java/jdk1.6.0_20/bin/javadoc 180060
優先級說明:180060 = 版本 1.6.0_20 編碼,高版本設高優先級。alternatives --config java 可互動切換。
java -version
# java version "1.6.0_20"
# Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
# Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
javac -version
# javac 1.6.0_20
which java
# /usr/bin/java (alternatives 符號鏈接)
ls -l /usr/bin/java
# /usr/bin/java -> /etc/alternatives/java -> /opt/java/jdk1.6.0_20/bin/java
# 目錄結構
/opt/java/
├── jdk1.8.0_381/
├── jdk-11.0.21/
├── jdk-17.0.9/
└── jdk-21.0.1/
# 依次註冊,優先級遞增
alternatives --install /usr/bin/java java /opt/java/jdk1.8.0_381/bin/java 1800381
alternatives --install /usr/bin/java java /opt/java/jdk-11.0.21/bin/java 110021
alternatives --install /usr/bin/java java /opt/java/jdk-17.0.9/bin/java 170009
alternatives --install /usr/bin/java java /opt/java/jdk-21.0.1/bin/java 210001
# 切換預設版本
alternatives --config java
# 輸入選項序號即可
# RHEL 8/9 / CentOS Stream / Fedora
dnf install -y java-17-openjdk java-17-openjdk-devel
# 自動配置 alternatives、環境變量、證書存儲
# RHEL 7 / CentOS 7
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
| 問題 | 原因 | 解決 |
|---|---|---|
java: command not found | PATH 未生效 | source /etc/profile 或重新登入 |
| 版本不符預期 | alternatives 指向舊版本 | alternatives --config java 切換 |
Error: JAVA_HOME is not defined | 應用讀取 JAVA_HOME 失敗 | 確認 /etc/profile.d/java.sh 存在且可執行 |
| SSL 憑證錯誤 | 缺少 cacerts | 安裝 ca-certificates、執行 update-ca-trust |
採用 /opt/java 統一部署 + alternatives 多版本管理 + /etc/profile.d/ 環境變量持久化,即可構建穩定、可審計、易維護的 Java 運行時基礎設施。
Linux 設定 PostgreSQL 允許遠端連線:pg_hba.conf 與 postgresql.conf 雙檔修改
Ubuntu Samba 免密碼共享設定:三步完成無驗證存取
Linux 建立與掛載 XFS 檔案系統完整教學:安裝工具、格式化、掛載、開機自動掛載
Linux 建立與移除 swap 交換分區/檔案完整操作指南
Linux cal 命令完整指南:查看日曆、指定月份年份、多月顯示與腳本應用
VMware 克隆 Linux 後 eth0 消失解決方案:70-persistent-net.rules 與網卡配置同步修復