本文記錄在 CentOS/RHEL 等 Linux 發行版上,從卸載 OpenJDK 到安裝 Oracle JDK、配置環境變量、驗證安裝的完整操作步驟,包含常見坑點(位數不匹配、下載鏈接失效、解壓報錯)的解決方案。
java -version
若輸出包含 OpenJDK,說明系統預裝了開源版,建議卸載避免衝突。
# 查詢所有 java 相關 rpm 包 rpm -qa | grep -i java # 典型輸出(版本號可能不同) java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 tzdata-java-2016g-2.el7.noarch python-javapackages-3.4.1-11.el7.noarch javapackages-tools-3.4.1-11.el7.noarch
僅卸載 OpenJDK 核心包(保留 tzdata-java 等系統依賴):
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
再次執行 `rpm -qa | grep -i java` 確認僅剩系統依賴包。
mkdir -p /usr/local/java cd /usr/local/java
推薦方式:
jdk-8uXXX-linux-x64.tar.gz` → 使用 scp / rz / WinSCP 上傳至服務器。wget 搭配 Cookie(鏈接易失效,不推薦生產環境腳本依賴)。# 解壓 tar -zxvf jdk-8u131-linux-x64.tar.gz # 解壓後目錄通常為 jdk1.8.0_131 # 可選:重命名為簡短名稱 mv jdk1.8.0_131 jdk8
解壓報錯處理:若提示 not in gzip format,說明下載的是 HTML 頁面而非壓縮包。執行 file jdk-8u131-linux-x64.tar.gz 確認類型,重新下載正確文件。
vi /etc/profile
# JDK 環境變量 export JAVA_HOME=/usr/local/java/jdk8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version # 預期輸出: # java version "1.8.0_131" # Java(TM) SE Runtime Environment (build 1.8.0_131-b11) # Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) javac -version # javac 1.8.0_131
| 問題 | 原因 | 解決 |
|---|---|---|
bash: ./java: cannot execute binary file | 32 位系統安裝 64 位 JDK | 執行 uname -m 查看架構:x86_64=64位,i686=32位,下載對應版本 |
解壓報 not in gzip format | 下載頁面非壓縮包 | file 命令驗證,重新下載正確 .tar.gz |
| 環境變量不生效 | 未 source /etc/profile 或 shell 非登錄模式 | 重新登錄 SSH,或在 ~/.bashrc 追加同樣配置 |
| 多版本共存切換 | 需動態切換 JDK 版本 | 使用 alternatives --config java 或 sdkman 管理 |
# 註冊 java、javac、jar alternatives --install /usr/bin/java java /usr/local/java/jdk8/bin/java 1 alternatives --install /usr/bin/javac javac /usr/local/java/jdk8/bin/javac 1 alternatives --install /usr/bin/jar jar /usr/local/java/jdk8/bin/jar 1 # 切換版本 alternatives --config java
Linux 安裝 Oracle JDK 核心流程:卸載 OpenJDK → 上傳解壓官方 tar.gz → 配置 /etc/profile 環境變量 → source 生效 → java -version 驗證。關鍵注意點:系統架構匹配、下載文件完整性、環境變量永久生效。生產環境建議使用 Ansible/腳本自動化部署,並納入基線管理。