安装好了openjdk8和openjdk11之后,使用命令 sudo update-alternatives --config java 更换版本时,出现错误
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 来在手动模式中提供 /usr/bin/java (java)
update-alternatives: 警告: 将不会把 /usr/bin/java 替换为链接
我的解决方案是这样的:
- 第一个告警提及了/usr/bin/java,那我们就进入/usr/bin 目录中查看
tina-XPS-13-9360 :: /usr/bin » cd /usr/bin
tina-XPS-13-9360 :: /usr/bin » ls -l | grep java
drwxr-xr-x 3 root root 4096 2月 25 17:36 java
lrwxrwxrwx 1 root root 23 2月 25 18:06 javac -> /etc/alternatives/javac
lrwxrwxrwx 1 root root 25 2月 25 18:06 javadoc -> /etc/alternatives/javadoc
lrwxrwxrwx 1 root root 23 2月 25 18:16 javah -> /etc/alternatives/javah
lrwxrwxrwx 1 root root 23 2月 25 18:06 javap -> /etc/alternatives/javap
可以看到,除了java之外的其他java目录都有软链接,这大概就是第一条警告说的软链接损坏。
分析了一下,可能是我之前手动安装过jdk导致的。
如果你在这一步的时候没有java文件夹,可以跳过第二步~!
- 我的做法是,将/usr/bin/java 重命名,再重新加软链接,我不确定这个文件夹是不是我之前自己下载jdk的时候的目录,还是留一下吧
tina-XPS-13-9360 :: /usr/bin » sudo mv java javabackup
tina-XPS-13-9360 :: /usr/bin » ls -li|grep java
5650222 drwxr-xr-x 3 root root 4096 3月 17 14:58 javabackup
5514299 lrwxrwxrwx 1 root root 23 2月 25 18:06 javac -> /etc/alternatives/javac
5514300 lrwxrwxrwx 1 root root 25 2月 25 18:06 javadoc -> /etc/alternatives/javadoc
5514330 lrwxrwxrwx 1 root root 23 2月 25 18:16 javah -> /etc/alternatives/javah
5514301 lrwxrwxrwx 1 root root 23 2月 25 18:06 javap -> /etc/alternatives/javap
- 按照其他文件夹的规律,在确认/etc/alternatives/java存在的情况下,我们将/etc/alternatives/java 设置为 /usr/bin/java 的软链接
tina-XPS-13-9360 :: /usr/bin » sudo ln -s /etc/alternatives/java /usr/bin/java
tina-XPS-13-9360 :: /usr/bin » ls -li|grep java
5516926 lrwxrwxrwx 1 root root 22 3月 17 15:05 java -> /etc/alternatives/java
5650222 drwxr-xr-x 3 root root 4096 3月 17 14:58 javabackup
5514299 lrwxrwxrwx 1 root root 23 2月 25 18:06 javac -> /etc/alternatives/javac
5514300 lrwxrwxrwx 1 root root 25 2月 25 18:06 javadoc -> /etc/alternatives/javadoc
5514330 lrwxrwxrwx 1 root root 23 2月 25 18:16 javah -> /etc/alternatives/javah
5514301 lrwxrwxrwx 1 root root 23 2月 25 18:06 javap -> /etc/alternatives/javap
- 可以看到软链接已经设置成功了,更换java版本试试看
tina-XPS-13-9360 :: /usr/bin » sudo update-alternatives --config java
有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自动模式
* 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手动模式
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:2
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 来在手动模式中提供 /usr/bin/java (java)
tina-XPS-13-9360 :: /usr/bin » java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
完美!