我想通过终端使用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