首页 > 解决方案 > 使用 java -jar 命令时,Java 似乎已过时

问题描述

我最近一直在我的 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 Updater 时,它显示我正在运行最新版本。运行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)

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

标签: javawindowscommand-prompt

解决方案


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

如果您的机器上安装了 JDK 13,则需要检查环境变量PATH和/或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(复制非 java 路径):

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

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


推荐阅读