Java不支持的类版本错误

时间:2015-02-25 19:15:28

标签: java version ros

我完全不知道这里出了什么问题。有一天,我有一个使用rosjava的完美工作系统,然后第二天早上我收到了这个错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/ros/RosRun : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: org.ros.RosRun. Program will exit.

我没有改变任何代码,更新任何文件,没有。这恰好发生了。有谁知道为什么?

我尝试过的事情:在对类似的错误进行研究之后,我发现当java版本不匹配时会发生这种情况。 51是Java 1.7。所以我用:

检查了我自己的java版本
java -version

得到了:

java version "1.6.0_33"
OpenJDK Runtime Environment (IcedTea6 1.13.5) (6b33-1.13.5-1ubuntu0.12.04)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

所以我正在运行java 1.6。有道理,错误告诉我RosRun是1.7。我来看看。

$ file RosRun.class 
RosRun.class: compiled Java class data, version 50.0 (Java 1.6)

嗯,事实并非如此。这意味着我的代码必须在1.7中编译。让我查一下:

$ file project/build/classes/main/com/github/hsmrs_gui/project/GuiNode.class 
project/build/classes/main/com/github/hsmrs_gui/project/GuiNode.class: compiled Java class data, version 50.0 (Java 1.6)

我不知所措。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我运行了$sudo apt-get upgrade,将$java -version的输出转换为:

java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)

然后重新编写我的代码。它现在有效。我仍然不知道为什么这首先打破了。