在 ubuntu 中解决不同的 java 和 javac 版本

resolve different java and javac version in ubuntu

我的 java --version 给出:

openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.10)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.10, mixed mode, sharing)

但是当我这样做时:javac --version 我得到:

javac 17

whereis java 给出:

java: /usr/bin/java /usr/share/java /opt/jdk-17/bin/java /usr/share/man/man1/java.1.gz

据我所知,我是从官方网站下载 openjdk 17 并遵循官方文档的。

我通常使用 Maven 项目,我刚刚注意到这个问题。到目前为止还没有造成任何问题。但我想解决它。是否可以在不删除 java 并重新安装的情况下这样做?

更新:

echo $PATH
/home/arnob/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/jdk-17/bin:/home/arnob/sdks/flutter/bin:/opt/maven/bin:/home/arnob/.local/bin:/home/arnob/.pub-cache/bin:/usr/lib/postgres/13/bin

ls -l /usr/bin/java

lrwxrwxrwx 1 root root 22 Dec 19 00:58 /usr/bin/java -> /etc/alternatives/java

例如,在您的 bashrc 中,似乎您正在将 /opt/jdk-17/bin 添加到 PATH,但在最后,而不是在 /usr/bin/ 之前,并且您有 Java 11 JRE单独安装,所以它首先被拾取

你应该通过反转来解决这个问题

export JAVA_HOME=/opt/jdk-17
export PATH="${JAVA_HOME}/bin:$PATH"

我建议对 flutter、maven、Postgres 等做同样的事情

运行 在您的终端中执行以下命令并选择默认的 java 和 javac 版本。你不需要卸载任何东西。

update-alternatives --config java
update-alternatives --config javac