在 Debian 系统里“切换 Java”通常是指在多个已安装的 JDK / JRE 之间切换默认 java、javac 等命令版本。Debian 官方推荐用 update-alternatives 机制来管理。
下面按常见场景说明。
update-alternatives --list java
示例输出:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
如果提示 no alternatives for java,说明还没安装或没注册。
sudo update-alternatives --config java
会看到类似:
There are 2 choices for the alternative java.
Selection Path Priority
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111
输入编号回车即可。
很多人只切了 java,编译时还是旧版本:
sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
或者更省事(注册整个 JDK):
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1700
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 1700
java -version
javac -version
只影响当前 shell:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
适合:
sudo apt update
sudo apt install openjdk-17-jdk
sudo apt install openjdk-11-jdk
bash / zshJAVA_HOMEsudo apt remove openjdk-11-jdk
如果你愿意,可以告诉我:
我可以给你更精确的命令。