我完全不知道这里出了什么问题。有一天,我有一个使用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)
我不知所措。有人可以帮忙吗?
答案 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)
然后重新编写我的代码。它现在有效。我仍然不知道为什么这首先打破了。