54

当我运行一个 java 程序时,我收到了这个错误。你能否建议我们为什么会收到这个错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: 
    GenerateInvoice (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
4

4 回答 4

90

此类是使用比用于执行的 JDK 更新的 JDK 编译的。

最简单的方法是在执行程序的计算机上安装更新的 JRE。如果您认为您安装了最近的一个,请检查 JAVA_HOME 和 PATH 环境变量。

版本 49 是 java 1.5。这意味着该类是使用(或用于)一个还旧的 JDK 编译的。您可能尝试使用 JDK 1.4 执行该类。您确实应该使用更新的版本(1.6 或 1.7,请参阅java version history)。

于 2012-10-07T16:26:54.580 回答
4

另一种选择是删除所有类并重建。拥有构建文件是控制编译、打包和部署等整个过程的理想解决方案。您还可以指定源/目标版本

于 2012-10-07T17:36:12.790 回答
1

该代码很可能是使用较新的 JDK 编译的(不使用交叉编译选项),并且正在较早的 JRE 上运行。虽然升级 JRE 是一种解决方案,但最好使用交叉编译选项来确保代码将在任何 JRE 上运行,该 JRE 是应用程序的最低版本。

于 2012-10-07T16:30:36.837 回答
-1

这是一台全新的 linux Mint xfce 机器

我已经为此奋斗了大约一个星期。我正在尝试在 Netbeans IDE 上学习 Java,因此我很自然地直接从 Oracle 获得了组合文件。这是 JDK 和 Netbeans IDE 的一个包,位于此处的一个 tar 文件中。

位于 http://www.oracle.com/technetwork/java/javase/downloads/index.html 文件名 JDK 8u25 和 NetBeans 8.0.1

在安装它们之后(或者我认为)我会制作/编译一个简单的程序,比如“hello world”,它会输出一个你可以在终端中运行的 jar 文件。请记住,该程序在 Netbeans IDE 中运行。

我最终会遇到这个错误:java.lang.UnsupportedClassVersionError:

即使我从 oracle 网站运行该文件,我仍然拥有旧版本的 Java 运行时,它不兼容运行我的 jar 文件,该文件是用新的 java 运行时编译的。

在弄乱了从设置路径到编辑 .bashrc 没有任何补救措施的大部分内容之后。

我遇到了一个对我来说也很简单的解决方案。我遇到了一些自动安装 java 并在你的系统上配置它的东西,它适用于最新的 1.8。*

其中一个步骤是添加 PPA,起初并不确定这一点,但似乎没问题,因为它对我有用


sudo add-apt-repository ppa:webupd8team/java

sudo apt-get 更新

sudo apt-get install oracle-java8-installer


domenic@domenic-AO532h ~ $ java -version java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) Server VM (build 25.25-b02,混合模式)

我认为它也配置了浏览器 java。

我希望这对其他人有帮助。

于 2014-11-01T04:14:30.143 回答