我有一个简单的 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_91
。 javac.exe
和java.exe
我正在使用的文件都在 C:\Program Files\Java\jdk1.8.0_91\bin
中。这也是我的WindowsPATH
中定义的路径环境变量。
最佳答案
此错误意味着您正在使用不同的、不兼容的 Java 版本进行编译和运行。
执行java -version
和javac -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/