1

我第一次尝试学习如何在 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)。

4

2 回答 2

3

你的答案在这一行:

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 环境变量来完成)。

仅供参考,此答案解释了您在错误消息中看到的类文件版本号。

于 2019-06-21T22:19:43.763 回答
0

这里发生的情况是,您的系统中的 Java 版本比 IntelliJ 编译的版本旧。它可以在 IntelliJ 中运行,因为它内部有自己的 Java 可执行文件。

如果你java -version在命令行中运行,它会输出你在系统中的版本;您可以在 IDE 中选择它作为编译目标,这样当您从 cmd 运行它时它会正常工作。

于 2019-06-21T22:17:15.227 回答