在 Ubuntu 上切换 Java 版本,常用且推荐的方法是使用 update-alternatives。下面按步骤说明。
update-alternatives --list java
如果系统中有多个 Java,会看到类似:
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
javasudo update-alternatives --config java
输出示例:
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 auto mode
1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
2 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
3 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode
Press <enter> to keep the current choice[*], or type selection number:
输入对应数字并回车即可。
javac(非常重要)sudo update-alternatives --config javac
sudo update-alternatives --config javap
sudo update-alternatives --config javadoc
sudo update-alternatives --config jar
java -version
javac -version
编辑 ~/.bashrc 或 ~/.zshrc:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
生效:
source ~/.bashrc
⚠️ 这种方式只对当前用户生效,且可能与系统工具冲突。
sudo apt update
sudo apt install openjdk-17-jdk
.deb 或 .tar.gz/usr/lib/jvm/update-alternatives 注册java -version 不变java 和 javacPATH 是否被手动覆盖source ~/.bashrcupdate-alternativesJAVA_HOME如果你愿意,我可以: