安装了 jdk-12.0.1,但 java --version 命令显示 openjdk-11.0.3

安装了 jdk-12.0.1,但 java --version 命令显示 openjdk-11.0.3

我想通过终端使用java -jar命令运行我的 app.jar,但出现以下错误:

Main 已由较新版本的 Java Runtime(类文件版本 56.0)编译,此版本的 Java Runtime 仅识别最高 55.0 版的类文件

这让我很惊讶,因为当我设置一切时,我已经jdk-12.0.1从 java.sun.com 下载并安装了。此外,JAVA_HOME路径/etc/environment设置为/usr/lib/jvm/openjdk-12.0.1目录。但是当我运行 时java --version,它显示:

openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu218.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu218.04.1, mixed mode, sharing)

有人能解释为什么会这样吗?我应该怎么做才能正确配置一切?

答案1

您的系统级 Java 仍配置为 OpenJDK 11。为了正确管理多个 Java 安装,您应该注册手动下载的 Oracle/Open JDK 12,以便 Ubuntu 可以识别它。之后,您可以使用 配置所需的特定 Java 版本update-alternatives。以下命令将注册新的 Java 安装并将其设置为第一优先级:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/openjdk-12.0.1/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/openjdk-12.0.1/bin/javac" 1

如果您只需要安装单个 Java,则通过官方存储库或 ppa 将最新的 Java 作为系统包安装会更容易:

OpenJDK 12

sudo apt install openjdk-12-jdk

Oracle JDK 12

sudo add-apt-repository ppa:linuxuprising/java
sudo apt install oracle-java12-installer

相关内容