当我在TinyOS中使用make命令时,比如make mica2。将出现以下问题:
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)
make: *** [exe0] Error 1
我重新安装了JAVA并添加了env变量,但它没有用。我使用TinyOS 2.1和JAVA 1.5 u18。谁能帮我?
安装JDK 1.6解决了问题。虽然当我运行tos-check-env命令时,它会向我显示一条警告,告诉我它不是JDK 1.4或1.5。也许这是TinyOS中的一个错误。
答案 0 :(得分:4)
UnsupportedClassVersionError意味着您尝试在较旧版本的JVM上运行字节代码而不是编译它。您可以使用类文件查看器来检查源代码编译它的JDK版本并确保它与JAVA 1.5 u18兼容。
答案 1 :(得分:2)
您获得的错误意味着正在运行的Java版本正在尝试加载使用不兼容的Java版本编译的类。
根据您提供的信息,不可能比这更具体地诊断问题 - 查看您正在使用的任何Java库以及它们所需的Java版本。如果你在这里找不到任何错误,你可能只需要清理一些在重新安装之前使用Java版本构建的缓存的* .class文件。
最后,如果您安装了多个JVM,请确保make
正在使用您期望的JVM。您可以安装Java 1.5u18,但应用程序仍然可以从某个地方查找和使用1.4 JVM。
答案 2 :(得分:1)
我今天遇到了同样的错误,我只是通过安装java版本1.6和jre6,以及将Java 1.6版本作为默认版本来解决它。
我之前也安装了java 1.5,因为tos-check-env要我安装java 1.4或java 1.5版本。
我还在我的类路径中包含了java 1.5和1.6版本,并在make micaz
目录中再次运行/opt/tinyos-2.1.0/apps/Blink
并且它有效。
答案 3 :(得分:0)
通常会有一条消息,例如
(Unsupported major.minor version 49.0)
在异常消息的第一行。但是,你有
Bad version number in .class file
那么也许你的类文件已损坏?
答案 4 :(得分:0)
使用sudo update-alternatives --config java并设置您可能想要使用的版本。