CentOS 上 Java 更新换代实操指南
一 准备与版本选择
- 查看当前版本与提供者:运行命令:java -version、javac -version、which java,确认是否存在多个 JDK 或软链接冲突。
- 选择目标版本:
- CentOS 7/8 常用 OpenJDK 8(系统库稳定,生态兼容性好)。
- CentOS 9/Stream 9 起默认 OpenJDK 17(系统基线更高)。
- 选择安装方式:优先使用系统仓库(yum/dnf)便于升级与维护;如需特定厂商或版本,使用 Oracle JDK 或 OpenJDK 官方 tar.gz 手动安装。
二 方法一 使用包管理器升级 OpenJDK(推荐)
- CentOS 7/8(yum):
- 更新索引:sudo yum update
- 安装/升级到 OpenJDK 8(含编译器):sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
- 验证:java -version、javac -version
- CentOS 9/Stream 9(dnf):
- 安装/升级到 OpenJDK 17(含编译器):sudo dnf install -y java-17-openjdk java-17-openjdk-devel
- 验证:java -version、javac -version
- 多版本并存与切换:
- 查看/切换:sudo alternatives --config java(按提示选择默认 java)
- 如需,也用 alternatives 配置 javac 的默认版本
- 说明:包管理器安装的 OpenJDK 通常位于 /usr/lib/jvm/,由 alternatives 管理默认版本,日常无需手动改 PATH。
三 方法二 手动安装 Oracle JDK 或 OpenJDK(特定版本或厂商需求)
- 下载安装包:
- Oracle JDK:https://www.oracle.com/java/technologies/javase-downloads.html
- OpenJDK:https://jdk.java.net/
- 安装步骤(以 tar.gz 为例):
- 解压到系统目录:sudo tar zxvf jdk-xx_linux-x64_bin.tar.gz -C /usr/lib/jvm
- 注册 alternatives(便于切换与回滚):
- 注册 java:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-xx/bin/java 100
- 注册 javac:sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-xx/bin/javac 100
- 切换:sudo update-alternatives --config java(必要时也配置 javac)
- 配置环境变量(系统级):
- 新建文件:sudo nano /etc/profile.d/java.sh
- 写入:
- export JAVA_HOME=/usr/lib/jvm/jdk-xx
- export PATH=$JAVA_HOME/bin:$PATH
- 生效:source /etc/profile.d/java.sh
- 验证:java -version、javac -version
- 如需使用 .rpm 包:可用 sudo rpm -ivh jdk-X.X.X-linux-x64.rpm 安装,再用 alternatives 切换默认版本。
四 验证与常见问题处理
- 验证要点:
- 版本:java -version、javac -version
- 路径:which java、readlink -f $(which java)(确认指向期望的 JDK)
- 编译器:确认 javac 可用(开发场景必需)
- 常见问题:
- 多版本冲突:用 alternatives --config java 统一默认版本,避免 PATH 顺序导致的“版本错乱”。
- 环境变量未生效:使用 /etc/profile.d/java.sh 集中管理,执行 source /etc/profile.d/java.sh 或重开终端;避免多处散乱设置。
- 服务未使用新版本:重启相关 Java 服务/应用,或重启依赖进程,使其重新加载 JAVA_HOME。
- 回滚策略:保留旧版本包或解压目录;通过 alternatives --config java 切回;必要时用 yum/dnf remove 清理不再使用的版本。