在 CentOS 上切换 Java 版本,常见做法有 alternatives(推荐)、手动配置 JAVA_HOME 和 PATH,以及使用 SDKMan。下面按最常用到最灵活的顺序说明。
alternatives 切换(CentOS 推荐 ✅)java -version
查看系统中已注册的 Java:
sudo alternatives --config java
输出示例:
There are 2 programs that provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-1.8.0-openjdk/jre/bin/java
2 /usr/lib/jvm/java-17-openjdk/bin/java
Enter to keep the current selection[+], or type selection number:
输入数字即可切换。
例如你手动安装了 /usr/local/jdk-17:
sudo alternatives --install /usr/bin/java java /usr/local/jdk-17/bin/java 3
sudo alternatives --install /usr/bin/javac javac /usr/local/jdk-17/bin/javac 3
然后:
sudo alternatives --config java
sudo alternatives --config javac
java -version
javac -version
JAVA_HOME 切换(适合开发环境)vi ~/.bashrc
添加或修改:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
echo $JAVA_HOME
java -version
✅ 适合 单用户 / 开发环境
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
✅ 适合 开发 / 多版本共存
| 类型 | 路径 |
|---|---|
| OpenJDK 8 | /usr/lib/jvm/java-1.8.0-openjdk |
| OpenJDK 11 | /usr/lib/jvm/java-11-openjdk |
| OpenJDK 17 | /usr/lib/jvm/java-17-openjdk |
java -version 没变?PATH 顺序source ~/.bashrc/etc/profile 覆盖/etc/profile.d/*.shJAVA_HOME| 场景 | 推荐方式 |
|---|---|
| 系统级切换 | alternatives |
| 开发环境 | JAVA_HOME |
| 多版本频繁切换 | SDKMan |
如果你愿意,可以告诉我:
我可以给你 精确命令。