如何修复java.lang.UnsupportedClassVersionError?

时间:2017-06-30 18:11:34

标签: java jvm

我有一个简单的Java程序,它包含两个 function myFunction() { // Declare variables var input, filter, table, tr, td, i, occurrence; input = document.getElementById("myInput"); filter = input.value.toUpperCase(); table = document.getElementById("myTable"); tr = table.getElementsByTagName("tr"); // Loop through all table rows, and hide those who don't match the search query for (i = 0; i < tr.length; i++) { occurrence = false; // Only reset to false once per row. td = tr[i].getElementsByTagName("td"); for(var j=0; j< td.length; j++){ currentTd = td[j]; if (currentTd ) { if (currentTd.innerHTML.toUpperCase().indexOf(filter) > -1) { tr[i].style.display = ""; occurrence = true; } } } if(!occurrence){ tr[i].style.display = "none"; } } } 文件。从我的IDE(IntelliJ)执行时它运行正常。它也编译(通过.java实用程序)就好了。但是,当我尝试从Windows命令提示符(使用javac)运行它时,我收到此错误:

java <<myClassName>>

我已经阅读了各种问题并为此错误提出了解决方案,但我无法解决。似乎用于编译代码的Java版本不被认为与我运行它的JRE的版本相同。我正在使用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) 。我使用的jdk1.8.0_91javac.exe文件都在java.exe中。这也是我的Windows C:\Program Files\Java\jdk1.8.0_91\bin环境变量中定义的路径。

2 个答案:

答案 0 :(得分:2)

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

执行java -versionjavac -version以了解这些命令实际使用的版本。

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

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

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

  • 如果这些都不起作用,或者这是一次性使用,您只需在运行/编译程序时指定完整路径:

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

此材料取自Carlos Heuberger的评论

答案 1 :(得分:-1)

您的IntelliJ可能是指默认的JRE。浏览此链接 https://www.jetbrains.com/help/idea/2017.1/defining-a-jdk-and-a-mobile-sdk-in-intellij-idea.html 设置intelliJ。确保指向配置为路径的JRE。