java - 如何修复 java.lang.UnsupportedClassVersionError?

标签 java jvm

我有一个简单的 Java 程序,由两个 .java 组成文件。从我的 IDE (IntelliJ) 执行时它运行良好。它也可以很好地编译(通过 javac 实用程序)。但是,当我尝试从 Windows 命令提示符运行它时(使用 java <<myClassName>> ),我收到此错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=RunExport, offset=6
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:364)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:777)
        at java.net.URLClassLoader.access$400(URLClassLoader.java:96)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1225)
        at java.security.AccessController.doPrivileged(AccessController.java:366)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:660)
        at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:942)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:851)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:827)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:494)

我已经阅读了各种问题并针对此错误提出了解决方案,但我一直无法解决它。似乎用于编译代码的 Java 版本未被识别为与我运行该代码的 JRE 版本相同。我正在使用jdk1.8.0_91javac.exejava.exe我正在使用的文件都在 C:\Program Files\Java\jdk1.8.0_91\bin 中。这也是我的WindowsPATH中定义的路径环境变量。

最佳答案

此错误意味着您正在使用不同的、不兼容的 Java 版本进行编译和运行。

执行java -versionjavac -version来找出这些命令实际使用的版本。

然后,要修复版本,您有三个选择:

  • 通过 Java 控制面板更改使用的 Java 版本。

  • 通过编辑 PATH 环境变量来更改使用的 Java 版本。您所需的 Java 版本的路径应位于任何其他 Java 版本的路径之前。

  • 如果这些似乎都不起作用,或者这是一次性使用,您可以在运行/编译程序时简单地指定完整路径:

    C:\Program Files\Java\jdk1.8.0_91\bin\java.exe
    

此 Material 取自 Carlos Heuberger 的评论

关于java - 如何修复 java.lang.UnsupportedClassVersionError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44852601/

相关文章:

java - java 1.8 中的 jstack/jmap 替代方案

java - 为什么java在jvm公共(public)中保留长度字段

java - Java 对象序列化中如何处理对另一个类的静态成员的调用?

java - 是否可以从内部 Bean 调用 JSF 事件?

java - 如何设置绝对路径?

java - Android XML 等效于 C+ +'s "使用命名空间...”?

java - 编写复杂的 Excel 文件时出现 GC Overhead limit Exceeded Error

Java Object.wait(long, long) 实现与文档不同

java - 更改 JScrollBar 拇指大小?

javascript - 如何将 Javascript 添加到 IntelliJ