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

CentOS 系統安裝 OpenJDK 完整指南:yum、版本選擇、環境變量與驗證

     編輯:Java 相關知識

CentOS/RHEL 系統安裝 OpenJDK 生產級指南:yum 方式、多版本共存、環境配置與常見問題

OpenJDK 是 Java SE 標準的開源參考實現,CentOS 官方倉庫提供預編譯 RPM 包,是生產環境最穩定、便捷的安裝方式。本文涵蓋 JDK 8/11/17/21 安裝、JAVA_HOME 配置、alternatives 切換、容器化部署建議。

可用版本對照表 (CentOS 7/8/9)

OpenJDK 版本包名 (CentOS 7)包名 (CentOS 8/9)LTS 狀態推薦場景
Java 8 (1.8.0)java-1.8.0-openjdkjava-1.8.0-openjdkLTS (至 2030+)舊系統維護、兼容性優先
Java 11java-11-openjdkjava-11-openjdkLTS (至 2026+)主流生產環境標準
Java 17EPEL: java-17-openjdkjava-17-openjdkLTS (至 2029+)新項目首選、長期支持
Java 21不可用java-21-openjdkLTS (至 2031+)最新特性、長期支持

安裝命令速查

# 1. 搜索可用包
yum search openjdk | grep -i jdk

# 2. 安裝 JRE (僅運行)
yum install -y java-11-openjdk

# 3. 安裝 JDK (開發/編譯/生產推薦)
yum install -y java-11-openjdk-devel

# 4. 安裝頭文件/源碼 (JNI/調試需要)
yum install -y java-11-openjdk-headless java-11-openjdk-src

# 5. 查看安裝路徑
rpm -ql java-11-openjdk-devel | grep -E "(bin/javac|lib/jvm)"
# 典型路徑: /usr/lib/jvm/java-11-openjdk-11.0.x.x.x-x.el7.x86_64

完整安裝日誌解讀 (以 Java 11 為例)

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * updates: mirrors.aliyun.com

Resolving Dependencies
--> Running transaction check
---> Package java-11-openjdk-devel.x86_64 1:11.0.20.0.8-1.el7_9 will be installed
--> Processing Dependency: java-11-openjdk-headless = 1:11.0.20.0.8-1.el7_9
--> Processing Dependency: java-11-openjdk = 1:11.0.20.0.8-1.el7_9
--> Processing Dependency: libjvm.so(SUNWprivate_1.1)(64bit)
--> Processing Dependency: libjava.so(SUNWprivate_1.1)(64bit)
... (依賴鏈: freetype, fontconfig, giflib, libpng, lcms2, harfbuzz, graphite2, cups-libs, alsa-lib, elfutils-libs, zlib, glibc)
...
Transaction Summary
Install  1 Package (+35 Dependent packages)
Total download size: 180 M
Installed size: 380 M
Is this ok [y/d/N]: y

關鍵依賴說明:字體渲染 (freetype/fontconfig)、圖像處理 (giflib/libpng/lcms2)、音頻 (alsa-lib)、打印 (cups-libs)、國際化 (harfbuzz/graphite2)。最小化安裝可用 headless 版本避免圖形庫依賴。

環境變量配置 (永久生效)

# 1. 確定安裝路徑
readlink -f $(which java)
# 輸出: /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64/bin/java
# JAVA_HOME 為: /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64

# 2. 配置 /etc/profile.d/java.sh (推薦,全局生效)
cat > /etc/profile.d/java.sh <<'EOF'
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF

# 3. 立即生效
source /etc/profile.d/java.sh

# 4. 驗證
java -version
# openjdk version "11.0.20" 2023-07-18 LTS
# OpenJDK Runtime Environment 18.9 (build 11.0.20+8-LTS)
# OpenJDK 64-Bit Server VM 18.9 (build 11.0.20+8-LTS, mixed mode, sharing)

javac -version
# javac 11.0.20

多版本管理:alternatives 系統

# 查看當前默認版本
alternatives --display java

# 列出所有已安裝 Java
alternatives --list | grep java

# 切換默認版本 (交互式)
alternatives --config java

# 手動設置優先級 (數字越大優先級越高)
alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk/bin/java 1700
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk/bin/javac 1700

# 同步切換 javac/javaws/jar 等工具
alternatives --config javac

容器化部署最佳實踐 (Dockerfile)

# 基於官方精簡鏡像 (推薦)
FROM eclipse-temurin:17-jre-alpine
# 或構建自定義
FROM registry.access.redhat.com/ubi8/ubi-minimal

# 安裝 OpenJDK 17 (微鏡像)
RUN microdnf install -y java-17-openjdk-headless \
    && microdnf clean all

# 設置 JAVA_HOME (ubi 鏡像路徑可能不同)
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
ENV PATH=$JAVA_HOME/bin:$PATH

# 創建非 root 用戶
RUN useradd -r -s /sbin/nologin appuser
USER appuser

# 複製應用
COPY target/app.jar /app/app.jar
ENTRYPOINT ["java", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75.0", "-jar", "/app/app.jar"]

常見問題排查

問題原因解決
java: command not foundPATH 未包含 JAVA_HOME/binsource /etc/profile 或重新登錄
版本不匹配 (如需要 11 卻是 8)alternatives --config java 切換
SSL 握手失敗 / 憑證錯誤ca-certificates 未安裝或過期yum install -y ca-certificates && update-ca-trust
字體渲染異常 / 圖表無中文缺少中文字體yum install -y google-noto-sans-cjk-fonts 或複製字體到 $JAVA_HOME/lib/fonts
容器內 OOM / CPU 限制不生效JVM 未識別 cgroup 限制添加 -XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 (JDK 10+)
yum 安裝極慢 / 失敗鏡像源問題配置阿里雲/清華源: yum-config-manager --add-repo https://mirrors.aliyun.com/repo/Centos-7.repo

安全加固建議

  • 定期 yum update java-* 修補 CVE
  • 生產環境僅安裝 headless 版本減少攻擊面
  • 禁用不安全的 TLS 版本:-Djdk.tls.client.protocols=TLSv1.2,TLSv1.3
  • 限制 JMX/RMI 遠程訪問,或僅本地監聽
  • 使用 jlink 定製無模塊化運行時 (需模塊化應用)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved