这里记录的是alternatives命令来切换版本,不用修改环境变量。 修改python版本也可以用这个。
1.查看系统上已安装的java
sudo update-alternatives --display java
结果:
开始只有个1.8的
java - auto mode
link best version is /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
link currently points to /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
link java is /usr/bin/java
slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - priority 1081
slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz
又装了个17的
java - auto mode
link best version is /usr/lib/jvm/java-17-openjdk-amd64/bin/java
link currently points to /usr/lib/jvm/java-17-openjdk-amd64/bin/java
link java is /usr/bin/java
slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-17-openjdk-amd64/bin/java - priority 1711
slave java.1.gz: /usr/lib/jvm/java-17-openjdk-amd64/man/man1/java.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java - priority 1081
slave java.1.gz: /usr/lib/jvm/java-8-openjdk-amd64/jre/man/man1/java.1.gz
输出结果分析:
link best version is # 最好的版本
link currently points to #当前版本
link java is #java 命令指向的位置
再后边就是已安装的java版本了
2.安装新的java
不太喜欢那种下载压缩包再解压啥的,下边这种命令行的比较省事。
先查看有哪些支持的jdk
apt-cache search jdk
我这里装个17的,JDK的默认下载目录是/usr/lib/jvm/下
sudo apt-get install openjdk-17-jdk
安装完17以后,系统默认的java版本就成这个了。
3.切换java版本
sudo update-alternatives --config java
如果只有一种可选,类似这种提示
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Nothing to configure.
如果多种,如下,然后看自己想切换哪种,输入对应的序号0,1,2就行了。
sudo update-alternatives --config java
There are 2 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-17-openjdk-amd64/bin/java 1711 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
配置
这个是非必须的,比如上边我们安装完新的java17,系统自动就配置好了。如果是下载个压缩包java11,完事解压,我们想把java指定到11,那么就如下边配置一下。
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk11/jre/bin/java 3
下边有讲install后边的参数意义,主要是指定下path,前边都是一样的。
install
alternatives --install <link> <name> <path> <priority>
install表示安装
link是符号链接
name则是标识符
path是执行文件的路径(不同的版本这里就指向对应版本所在的路径)
priority则表示优先级