Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Ubuntu 安裝 JDK 完整指南:目錄選擇、環境變量配置、sudo 生效陷阱與雙文件方案

編輯:Linux 系統常見問題解答

安裝 JDK 核心只有兩件事:確定安裝目錄、正確配置環境變量。但「配置在哪個文件」、「sudo 後失效」、「圖形界面程序讀不到」等坑讓無數新手折騰。本文從原理分析到實操步驟,給出經過驗證的最佳實踐方案。

一、 理論分析:配置文件選哪個?

文件作用範圍生效時機適合 JDK?
/etc/environment全系統、與用戶無關重啟❌ 不支持變量擴展($VAR),且無法區分用戶
/etc/profile所有用戶登錄 Shell注銷重新登錄✅ 系統級,但 sudo su 不讀取(非登錄 Shell)
/etc/bash.bashrc所有用戶交互式 Bash打開新終端✅ 覆蓋 sudo su、圖形啟動器調用的非登錄 Shell
~/.bashrc當前用戶交互式 Bash打開新終端❌ 單用戶,不適合多用戶共享服務器

核心矛盾

  • /etc/profile:普通用戶登錄生效,但 sudo su 切換到 root 時不讀取(非登錄 Shell),導致 root 下 java -version 失效。
  • /etc/bash.bashrc:sudo su、圖形終端會讀取,但 非 Shell 啟動的程序(如 Eclipse、IDE、systemd 服務)不會讀取,導致它們找不到 JDK。

二、 解決方案:雙文件同寫法

同時將 JDK 環境變量寫入 /etc/profile 和 /etc/bash.bashrc,覆蓋「登錄 Shell」與「非登錄交互式 Shell」兩大場景。對於 systemd 服務,建議在服務文件 Environment= 中顯式指定或使用 ExecStartPre source 腳本。

三、 實操步驟(以 JDK 8u37 為例)

1. 下載並解壓

# 64 位系統下載 jdk-8u37-linux-x64.tar.gz(Oracle 官網需登錄,或用 OpenJDK)
# 此處示例用舊版 jdk-6u37,實際請用 LTS 版本
mv jdk-6u37-linux-x64.bin /opt/
cd /opt
chmod +x jdk-6u37-linux-x64.bin
./jdk-6u37-linux-x64.bin
# 解壓後目錄:/opt/jdk1.6.0_37

2. 編輯 /etc/profile

vim /etc/profile
# 文件末尾追加
# JDK 環境變量
export JAVA_HOME=/opt/jdk1.6.0_37
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

3. 編輯 /etc/bash.bashrc

vim /etc/bash.bashrc
# 文件末尾追加(內容同 /etc/profile)
export JAVA_HOME=/opt/jdk1.6.0_37
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

4. 生效並驗證

source /etc/profile
source /etc/bash.bashrc

# 普通用戶驗譹
java -version
javac -version

# sudo su 後驗證(關鍵測試)
sudo su -
java -version

# 圖形界面驗證:打開新終端或啟動 Eclipse/IDEA 檢查 JDK 識別

四、 進階:使用 update-alternatives 管理多版本(推薦)

Ubuntu/Debian 系統建議用 update-alternatives 註冊 JDK,自動維護 /usr/bin/java 等符號鏈接,切換版本一條命令:

# 註冊(優先級 300)
update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_201/bin/java 300
update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_201/bin/javac 300
update-alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_201/bin/jar 300

# 切換版本
update-alternatives --config java
# 選擇序號即可

此法下 JAVA_HOME 仍建議在雙文件中顯式導出,或寫腳本 /etc/profile.d/jdk.sh 由 update-alternatives --config 觸發更新(需自行實現)。

五、 常見坑總結

  • CLASSPATH 以 . 開頭:表示當前目錄優先,避免類加載找不到當前目錄下的類。
  • 路徑無空格、中文:安裝目錄盡量用純 ASCII,避免腳本解析錯誤。
  • 重啟 vs source:修改 /etc/profile 需重新登錄;修改 /etc/bash.bashrc 只需開新終端。生產環境建議重啟驗證持久化。
  • OpenJDK 替代:apt install openjdk-11-jdk 自動配置好路徑與 alternatives,省去手動麻煩,生產環境首選。

結語: 雙文件同寫法解決 95% 場景下的 JDK 找不到問題;剩下 5%(systemd、cron、容器)請在啟動入口顯式聲明環境。養成「配置即文檔、驗證全場景」的習慣,才能一勞永逸。

Copyright © Windows教程網 All Rights Reserved