在 CentOS 上切换 Java 版本,常见有三种方式,最推荐的是使用 alternatives(系统级切换)。下面按常用场景给你完整说明。
java -version
rpm -qa | grep java
或
ls /usr/lib/jvm/
常见路径:
/usr/lib/jvm/java-1.8.0-openjdk/usr/lib/jvm/java-11-openjdk/usr/lib/jvm/java-17-openjdkalternatives 切换 Java(✅ 推荐)sudo alternatives --config java
输出示例:
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-17-openjdk/bin/java
2 /usr/lib/jvm/java-11-openjdk/bin/java
3 /usr/lib/jvm/java-1.8.0-openjdk/bin/java
Enter to keep the current selection[+], or type selection number:
输入数字即可切换。
javac(非常重要)sudo alternatives --config javac
⚠️ 只切换
java不切换javac,编译和运行版本可能不一致。
java -version
javac -version
例如你手动安装了 JDK:
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
数字 3 是优先级(越大越优先)。
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
验证:
java -version
关闭终端后失效。
vi ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
sudo vi /etc/profile
添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
然后:
source /etc/profile
java 和 javacJAVA_HOME 覆盖sudo 不同环境alternatives ✅| 场景 | 推荐方式 |
|---|---|
| 系统级切换 | alternatives |
| 临时测试 | export JAVA_HOME |
| 多用户 | /etc/profile |
| 单用户 | ~/.bashrc |
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的方案。