线程“main”中的Tinyos异常java.lang.UnsupportedClassVersionError:.class文件中的错误版本号

时间:2009-05-26 15:56:04

标签: java tinyos

当我在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中的一个错误。

5 个答案:

答案 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并设置您可能想要使用的版本。

相关问题