我试图运行一个 java 类文件,但发生了 jni 错误

我试图运行一个 java 类文件,但发生了 jni 错误
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld ha
s been compiled by a more recent version of the Java Runtime (class file version
 56.0), this version of the Java Runtime only recognizes class file versions up
to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

我已经重新安装了 JRE 和 JDK 几次,但没有帮助。

答案1

基本上,您使用的 JRE 比用于编译类的 JDK 更旧。错误消息中的关键信息是:

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

根据类文件版本,您使用的 JRE 可能是 5 年前发布的?您需要:

  • 将 JRE 更新到最新版本(更好的选择)

或者

  • 安装匹配的旧 JDK,以便您可以编译与当前 JRE 兼容的类。

java -version注意:如果您安装了较新的 JRE 版本并从终端运行,则给定的版本是否与您安装的版本相匹配?如果不匹配,请检查您PATHJAVA_HOME环境变量 - 它们可能指向错误的位置。

相关内容