尽管Java版本相同,但UnsupportedClassVersionError仍然存在

时间:2012-04-21 07:40:59

标签: java swing class unsupported-class-version

我在目标计算机中遇到此错误,尽管:

  1. 我的源计算机和目标计算机都安装了相同版本的Java-1.6 26th update
  2. 我编译并以类似方式运行的所有文件都运行得很好,除了这个 - 它是我的应用程序的Swing GUI
  3. 另外我没有使用任何IDE,我使用普通记事本进行编辑
  4. 为什么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)
    

2 个答案:

答案 0 :(得分:3)

不幸的是,事实上你的主类实际上是使用较新版本的Java编译器编译而不是运行它。那个或你的类文件在某种程度上以某种方式可怕地被破坏了。检查您的java上是否安装了javacPATH的多个版本。您可能还想尝试将-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

检查版本