Java 在使用 java -jar 命令时似乎已过时

Java appears to be outdated when using java -jar command

我最近在 Windows 计算机上编写了一些 Java 程序。我一直在尝试使用 java -jar 到 运行 编译的 jar 以便更清楚地查看错误,但是当我尝试这样做时,出现以下错误:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/company/app/GUI has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0

这显然意味着我的 java 版本已经过时了。但是,当我查看 Java 更新程序时,它显示我正在 运行ning 最新版本。 运行 java -version 显示:

java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) Client VM (build 25.261-b12, mixed mode)

为什么命令提示符使用旧版本,我该如何更改它? 谢谢你的帮助。

此错误清楚地表明您尝试 运行 使用 JDK 13(主要版本 57)构建的 运行 文件在 JRE/JDK 8(主要版本 52)上) 在 PATH 设置中提供,因此在 运行ning java -jar / java -version 命令时调用。

如果你的机器上安装了JDK 13,你需要检查环境变量PATH and/or JAVA_HOME:

C:\Users\hp1>echo %JAVA_HOME%
C:\Java\jdk-13.0.2

C:\Users\hp1>echo %PATH%
C:\Windows\system32;C:\Java\jdk-13.0.2\bin

C:\Users\hp1>java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

如果PATH引用JRE/JDK 8,您可以创建另一个变量并更新PATH(复制non-java路径):

>set JAVA_13=**path_to_your_jdk_13**
>set PATH=C:\Windows\system32;%JAVA_13%\bin

如果您的计算机上没有 JDK 13,要解决此问题,您应该重建 .jar 文件以使其与 JDK 8 兼容,前提是代码是不使用新版本的任何功能。