运行闪烁程序时出错



我在 Ubuntu 16.04 的 TinyOs 中工作。 当我运行 Blink 程序时,发生以下错误:

[INFO] script
2538 bytes in ROM
56 bytes in RAM
[INFO] size (toolchain):
text    data     bss     dec     hex filename
2596       2      56    2654     a5e build/telosb/main.exe
[INFO] generating symbol table
[INFO] generating listing
[INFO] creating ihex file
[INFO] writing TOS image
[INFO] writing TOS buildinfo
[INFO] running the wiring check
<JAVA_HOME>/lib/ext exists, extensions mechanism no longer supported; Use     
-classpath instead.
.Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
../../support/make/Makerules:362: recipe for target 'wiring_check' failed
make: *** [wiring_check] Error 1

有没有人知道为什么会发生此错误?

这是由TinyOS构建工具链尝试使用在最新(版本9(Java中不推荐使用的Java功能引起的。您需要安装较旧的 Java JRE 版本,并将JAVA_HOME设置为此较旧的版本:

  • 首先通过在终端中键入java -version来检查您当前的 Java 版本。如果不是版本 9 或更高版本,请停止 - 这可能不是您需要的解决方案。
  • 转到旧版本的 Java 下载页面
  • 在"Java SE"(SE代表"标准版",这是我们需要的(下,选择一个旧版本。TinyOS 正式支持版本 1.4 和 5,但我知道版本 7 工作正常,因为这是我正在使用的版本。版本 8 也可能正常工作。
  • 然后在"Java SE 运行时环境"下,选择 Linux x86(如果您使用的是 Ubuntu 32 位(或 Linux x64(适用于 64 位(。您可以通过在终端中键入uname -i来了解您是 32 位还是 64 位。选择以".tar.gz"结尾的版本(.rpm适用于其他类型的 Linux(。您需要使用 Oracle 帐户登录,如果没有帐户,则需要注册。
  • 下载.tar.gz文件。您可以决定要在系统上的哪个位置保存此版本的 Java。你可以把它放在主目录中的某个地方,但按照惯例,我们通常把这些类型的程序保存在'/usr/local/java'中。如果你想把它保留在那里,你将不得不使用sudo cp,例如sudo cp -r jre-8u73-linux-x64.tar.gz /usr/local/java(您的文件名可能不同(
  • 现在,您需要从压缩的.tar.gz文件中提取文件。例如,sudo tar xvzf /usr/local/java/jre-8u73-linux-x64.tar.gz
  • (可选(您现在可以删除 .
  • 您需要确保您有权执行下载的 java。例如,您可以使用chown -R jre-8u73-linux-x64
  • 最后,您需要将JAVA_HOME环境变量设置为指向刚刚创建的 java 文件夹的位置。有很多方法可以做到这一点。我建议在/etc/profile.d 目录中创建一个文件(称为类似 java-env.sh 的文件(,如下所示: export JAVA_HOME=/usr/local/java/jre-8u73-linux-x64 export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
  • 您可能还需要通过执行sudo update-java-alternatives --set /path/to/java/version来告诉 Ubuntu 使用您的旧版本
  • 打开一个新的终端窗口,检查java -version现在是否为您提供旧版本。

更好的方法是仅为TinyOS创建一个隔离的开发VM环境,因为您并不真正希望在主机上安装旧版本的Java。你可以使用类似Vagrant的东西来做到这一点。如何做到这一点太长而无法回答,请查看他们的文档。

最新更新