我正在尝试第一次学习如何在Java中编程,而在cmd中运行代码时却遇到此错误:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has 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)
它在我正在使用的IDE(intelliJ)中工作。
答案 0 :(得分:1)
您的答案在这一行:
Exception in thread "main" java.lang.UnsupportedClassVersionError:
Main has 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
您的版本不匹配。您已经使用Java 12在IntelliJ中编译了代码,但是您在cmd中使用了Java 8(可以使用java -version
命令进行确认)。
解决方案是将cmd设置为Java 12(可以通过在Windows中更改JAVA_HOME和PATH环境变量来完成)。
FYI this答案解释了您在错误消息中看到的类文件版本号。
答案 1 :(得分:0)
这里发生的是,您的系统中的Java版本比IntelliJ编译的Java版本要旧。它可以在IntelliJ中使用,因为它内部具有自己的Java可执行文件。
如果在命令行中运行java -version
,它将输出系统中已有的版本;您可以在IDE中选择它作为编译目标,以便在以cmd格式运行它时可以正常工作。