在 CentOS 上切换 Java 编译版本(JDK 版本),常见做法有 三种:
✅ alternatives(推荐)
✅ 手动配置 JAVA_HOME
✅ SDKMAN(适合多版本频繁切换)
下面按使用频率从高到低说明。
alternatives 切换(CentOS 官方推荐)java -version
查看所有已注册 JDK:
sudo alternatives --config java
输出示例:
* 1 /usr/lib/jvm/java-1.8.0-openjdk/bin/java
2 /usr/lib/jvm/java-17-openjdk/bin/java
输入编号即可切换。
javacsudo alternatives --config javac
⚠️ 编译版本由 javac 决定,不只是 java
which java
ls -l /etc/alternatives/java
ls /usr/lib/jvm/
示例:
java-1.8.0-openjdk
java-11-openjdk
java-17-openjdk
编辑:
vi ~/.bashrc
添加(示例:切换到 JDK 17):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
使配置生效:
source ~/.bashrc
java -version
javac -version
echo $JAVA_HOME
sudo yum install java-1.8.0-openjdk-devel
sudo yum install java-11-openjdk-devel
sudo yum install java-17-openjdk-devel
sudo dnf install java-17-openjdk-devel
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk list java
sdk install java 17.0.9-open
sdk install java 8.0.392-open
sdk default java 17.0.9-open
sdk use java 8.0.392-open
✅ 自动处理 JAVA_HOME 和 PATH
javac -version
确保与 java -version 一致
mvn -v
Maven 使用 JAVA_HOME
需要修改:
/etc/profile
/etc/environment
systemctl set-environment
| 场景 | 推荐方式 |
|---|---|
| 服务器 | alternatives + JAVA_HOME |
| 本地开发 | SDKMAN |
| CI / Docker | 固定 JAVA_HOME |
如果你愿意,可以告诉我:
✅ CentOS 版本
✅ 当前 Java 版本
✅ 是服务器还是本地开发
我可以直接给你 精确命令。