我在目标计算机中遇到此错误,尽管:
为什么UnsupportedClassVersionError
尽管存在三个约束,并为其解决了问题?
注意:该文件是一个简单的GUI前端代码,它在源代码上完美运行,使用了来自AWT和SWING的简单库
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
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.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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
答案 0 :(得分:3)
不幸的是,事实上你的主类实际上是使用较新版本的Java编译器编译而不是运行它。那个或你的类文件在某种程度上以某种方式可怕地被破坏了。检查您的java
上是否安装了javac
和PATH
的多个版本。您可能还想尝试将-target 1.6
传递给javac;如果你正在运行(例如)javac 1.7,这将指示它生成与Java 1.6兼容的代码。
请记住,您可以安装不同版本的JRE和JDK - 根据您的PATH顺序,您的系统可能会为javac
选择Java 1.7但为java
选择Java 1.6。
此外,如果您的类路径中有任何第三方库,则应确保它们不是使用较新版本的Java编译的。如果您的其他课程没有使用可能掩盖问题的第三方库。
答案 1 :(得分:1)
当您尝试运行在不同版本的JDK中编译的类以在不同版本的JRE上执行时,就会发生这种情况,
请检查您的jdk和JRE版本是否相同或兼容。你可以使用java -version
检查版本