在 CentOS 上配置 多版本 Java 的常见做法有两种,推荐方式:使用 alternatives(系统级) + 手动配置 JAVA_HOME。下面我按 生产环境常用方案 给你讲清楚。
cat /etc/centos-release
java -version
如果已安装 Java,先查看:
rpm -qa | grep java
CentOS 7 / 8 / Stream 都支持:
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
sudo yum install -y java-11-openjdk java-11-openjdk-devel
sudo yum install -y java-17-openjdk java-17-openjdk-devel
安装后路径一般在:
/usr/lib/jvm/
比如下载 jdk-17:
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/
路径示例:
/usr/local/jdk-17
sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk/bin/java 1800
sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk/bin/java 1100
sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk/bin/java 1700
如果是手动安装:
sudo alternatives --install /usr/bin/java java /usr/local/jdk-17/bin/java 1700
sudo alternatives --config java
输出示例:
Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/java-1.8.0-openjdk/bin/java
2 /usr/lib/jvm/java-11-openjdk/bin/java
3 /usr/lib/jvm/java-17-openjdk/bin/java
输入编号回车即可。
验证:
java -version
readlink -f $(which java)
示例输出:
/usr/lib/jvm/java-17-openjdk/bin/java
JAVA_HOME 应为:
/usr/lib/jvm/java-17-openjdk
编辑:
sudo vi /etc/profile.d/java.sh
内容:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
生效:
source /etc/profile
vi ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
$JAVA_HOME/bin/java -jar app.jar
JAVA_HOME=/usr/lib/jvm/java-17-openjdk java -jar app.jar
java -version
echo $JAVA_HOME
which java
切换版本后再验证一次即可。
✅ alternatives 只管 java 命令
✅ JAVA_HOME 必须单独配置
sudo dnf install java-17-openjdk
| 场景 | 推荐 |
|---|---|
| 系统默认 | 一个稳定版本 |
| 多项目 | 启动脚本指定 JAVA_HOME |
| 生产环境 | 不用 Oracle,用 OpenJDK |
| 自动化 | 用 /etc/profile.d/java.sh |
如果你愿意,可以告诉我:
我可以 直接给你一套可复制的完整配置命令。