首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

CentOS 設定 Java 環境變數完整教程:JAVA_HOME、CLASSPATH、PATH 永久生效配置

     編輯:Java 相關知識

1. 確認 JDK 安裝路徑

[root@centos ~]# rpm -ql java-1.8.0-openjdk-devel | head -20
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64/bin/javac
...

# 關鍵路徑:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
# 通常有符號鏈接:/usr/lib/jvm/java 或 /usr/lib/jvm/jre 指向此處

2. 臨時生效 (當前 Shell Session)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 驗證
java -version
javac -version
echo $JAVA_HOME

3. 永久生效:三種範圍配置

方案 A:當前用戶永久 (~/.bashrc)

[root@centos ~]# vim ~/.bashrc
# 文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 立即生效
source ~/.bashrc

方案 B:所有用戶永久 (/etc/profile) — 推薦生產環境

[root@centos ~]# vim /etc/profile
# 文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

# 立即生效
source /etc/profile

方案 C:模組化配置 (/etc/profile.d/java.sh) — 最佳實踐

[root@centos ~]# cat > /etc/profile.d/java.sh <<'EOF'
#!/bin/bash
# Java 環境變數配置
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
EOF

chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

優勢:獨立文件、易維護、包管理器友好、不污染主 profile。

4. 針對特定應用用戶 (如 tomcat, jenkins)

# 在應用啟動腳本中設定 (如 /opt/tomcat/bin/setenv.sh)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64
export CATALINA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
# 不需設定 CLASSPATH,現代框架不依賴

5. 多 JDK 版本切換

# 安裝多版本
yum install -y java-11-openjdk-devel java-17-openjdk-devel

# alternatives 管理 (CentOS/RHEL)
alternatives --config java
alternatives --config javac

# 手動切換腳本
switch_java() {
    case $1 in
        8)  export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk ;;
        11) export JAVA_HOME=/usr/lib/jvm/java-11-openjdk ;;
        17) export JAVA_HOME=/usr/lib/jvm/java-17-openjdk ;;
        *) echo "Usage: switch_java 8|11|17"; return 1 ;;
    esac
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

6. 驗證配置生效

[root@centos ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-1.el7_9.x86_64

[root@centos ~]# java -version
openjdk version "1.8.0_362"

[root@centos ~]# javac -version
javac 1.8.0_362

[root@centos ~]# $JAVA_HOME/bin/java -version
openjdk version "1.8.0_362"

7. 現代 Java (9+) CLASSPATH 說明

  • JDK 9+ 模組化系統:rt.jar、tools.jar 不再存在,CLASSPATH 環境變數不再需要甚至可能干擾模組解析。
  • 建議:JDK 8 保留 CLASSPATH 相容舊代碼;JDK 11/17/21 移除 CLASSPATH export。
  • 依賴管理:由 Maven/Gradle、模組路徑 (--module-path)、ClassPath (-cp) 控制。

8. 常見問題排查

問題原因解決
java: command not foundPATH 未包含 $JAVA_HOME/bin檢查 export 順序、source 配置文件
javac: command not found安裝的是 JRE 而非 JDK (devel)yum install java-1.8.0-openjdk-devel
版本不匹配多 JDK 混亂、alternatives 指向錯誤alternatives --config java 統一版本
CLASSPATH 導致類衝突舊版 CLASSPATH 包含過期 JAR移除 CLASSPATH export (JDK 9+)

總結

  • 推薦方式:/etc/profile.d/java.sh 模組化配置,全域生效、易維護。
  • 核心三要素:JAVA_HOME (JDK 根目錄)、PATH (含 bin)、CLASSPATH (JDK 8 保留,JDK 9+ 移除)。
  • 驗證:新開終端執行 java -version、javac -version、echo $JAVA_HOME。
  • 多版本:用 alternatives 或自定義切換函數管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved