CentOS 預裝 OpenJDK (java-1.5.0-gcj 等) 版本老舊且兼容性差,生產環境通常需替換為 Oracle 官方 JDK。本文以 JDK 7u51 RPM 包為例,記錄標準化部署步驟。
jdk-7u51-linux-x64.rpm (需接受許可協議)# 查看現有 Java
java -version
rpm -qa | grep -i java
# 強制卸載 (忽略依賴)
rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
# 視具體安裝包名調整
# 上傳 RPM 至服務器 (如 /root/pkg)
cd /root/pkg
rpm -ivh jdk-7u51-linux-x64.rpm
# 驗證安裝路徑
ls -l /usr/java/
# 預期輸出:jdk1.7.0_51 latest default -> latest
# 編輯 /etc/profile
vi /etc/profile
# 文件末尾追加
export JAVA_HOME=/usr/java/latest
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
關鍵:使用 /usr/java/latest 軟鏈接,未來升級 JDK 僅需更新鏈接,無需改配置。
# 當前 Shell 生效
source /etc/profile
# 驗證
echo $JAVA_HOME
echo $PATH
echo $CLASSPATH
java -version
# 預期輸出:
# java version "1.7.0_51"
# Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
# Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
# 驗證編譯器
javac -version
# 註冊 java/javac/jar 到 alternatives
alternatives --install /usr/bin/java java /usr/java/latest/bin/java 20000
alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 20000
alternatives --install /usr/bin/jar jar /usr/java/latest/bin/jar 20000
# 切換版本
alternatives --config java
| 現象 | 原因 | 解決 |
|---|---|---|
| java -version 仍顯示 OpenJDK | 環境變量未生效 / alternatives 優先級較低 | source /etc/profile;檢查 alternatives --display java |
| CLASSPATH 導致應用啟動報 ClassNotFound | 硬編碼 CLASSPATH 干擾應用自身類加載 | 生產環境建議不設置 CLASSPATH,由應用啟動腳本自行構建 |
| JDK 升級後應用未生效 | 應用進程未重啟 / JAVA_HOME 指向具體版本目錄 | 使用 /usr/java/latest 鏈接 + 重啟應用 |
jdk-8uXXX-linux-x64.rpm 同步驗步驟。標準化 JDK 部署 = RPM 安裝 + /usr/java/latest 鏈接 + /etc/profile 環境變量 + alternatives 註冊 + 應用重啟驗證,納入 Ansible/Playbook 自動化交付。