当我尝试使用 cmd window 中的 "java" 命令 运行 我的代码时,出现错误

When I try to run my code with the "java" command in the cmd window, I get an error

我第一次尝试学习如何在 java 中编程,当我尝试 运行 命令中的代码时遇到此错误:

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.access0(Unknown Source)
        at java.net.URLClassLoader.run(Unknown Source)
        at java.net.URLClassLoader.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)。

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

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

你的答案在这一行:

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设置为Java12(这可以通过更改JAVA_HOME和Windows中的PATH环境变量来完成)。

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