1

当我在 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 并添加了环境变量,但它没有用。我使用 TinyOS 2.1 和 JAVA 1.5 u18。谁能帮我?

通过安装 JDK 1.6 解决了问题。虽然当我运行 tos-check-env 命令时,它向我显示了一个警告,告诉我它不是 JDK 1.4 或 1.5。也许这是 TinyOS 中的一个错误。

4

5 回答 5

4

UnsupportedClassVersionError 表示您正尝试在比编译它的旧版本的 JVM 上运行字节码。您可以使用类文件查看器检查源代码编译它的 JDK 版本,并确保它与JAVA 1.5 u18。

于 2009-05-26T16:01:58.237 回答
2

您收到的错误意味着正在运行的 Java 版本正在尝试加载使用不兼容的 Java 版本编译的类。

根据您提供的信息,不可能比这更具体地诊断问题 - 查看您正在使用的任何 Java 库以及它们所需的 Java 版本是什么。如果您在这里找不到任何错误,您可能只需要在重新安装之前清除一些使用 Java 版本构建的缓存 *.class 文件。

最后,如果您安装了多个 JVM,请确保make使用的是您期望的那个。您绝对可以安装 Java 1.5u18,但应用程序仍会从某个地方查找和使用 1.4 JVM。

于 2009-05-26T16:05:31.083 回答
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,它工作。

于 2010-06-27T02:09:50.013 回答
0

通常会有一条消息,例如

(Unsupported major.minor version 49.0)

在异常消息的第一行。然而,你得到了

Bad version number in .class file

那么也许您的类文件已损坏?

于 2009-05-26T18:39:54.317 回答
0

使用 sudo update-alternatives --config java 并设置您可能想要使用的版本。

于 2012-07-23T12:13:37.877 回答