Ubuntu 运行闪烁程序时出错

Ubuntu 运行闪烁程序时出错,ubuntu,tinyos,Ubuntu,Tinyos,我在Ubuntu 16.04的TinyOs中工作。 运行闪烁程序时,出现以下错误: [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]

我在Ubuntu 16.04的TinyOs中工作。 运行闪烁程序时,出现以下错误:

[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
[INFO]脚本
ROM中的2538字节
RAM中的56字节
[信息]尺寸(工具链):
文本数据bss dec十六进制文件名
2596 2 56 2654 a5e build/telosb/main.exe
[信息]生成符号表
[信息]正在生成列表
[信息]正在创建ihex文件
[信息]写入TOS图像
[信息]写入TOS buildinfo
[信息]正在运行接线检查
/lib/ext存在,不再支持扩展机制;使用
-而不是类路径。
。错误:无法创建Java虚拟机。
错误:发生致命异常。程序将退出。
../../support/make/Makerules:362:目标“接线检查”的方法失败
make:**[接线检查]错误1

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

这是由于TinyOS build tool chain试图使用最新(版本9)Java中不推荐的Java功能造成的。您需要安装较旧的Java JRE版本,并将Java_主页设置为此较旧版本:

  • 首先在终端中键入
    Java-version
    检查当前的Java版本。如果不是版本9或更高版本,请停止-这可能不是您需要的解决方案
  • 去医院
  • 在“JavaSE”(SE代表“标准版”,这是我们需要的),选择一个旧版本。TinyOS正式支持版本1.4和5,但我知道版本7可以正常工作,因为这是我正在使用的版本。版本8也可以正常工作
  • 然后在“JavaSE运行时环境”下,选择Linuxx86(如果您使用的是32位Ubuntu)或Linuxx64(对于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文件中提取文件。例如,
    sudotarxvzf/usr/local/java/jre-8u73-linux-x64.tar.gz
  • (可选)现在可以删除
  • 您需要确保您有权执行下载的java。例如,您可以使用
    chown-rjre-8u73-linux-x64
  • 最后,需要将JAVA_HOME环境变量设置为指向刚刚创建的JAVA文件夹的位置。有。我建议在/etc/profile.d目录中创建一个文件(称为类似于java env.sh的文件),其中包含以下内容:
    
    导出JAVA_HOME=/usr/local/JAVA/jre-8u73-linux-x64
    导出路径=$PATH:$HOME/bin:$JAVA_HOME/bin
    
  • 您可能还需要通过执行
    sudo-update-java-alternations-set/path/to/java/version
    来告诉Ubuntu使用旧版本
  • 打开一个新的终端窗口,检查
    java-version
    现在是否提供旧版本

更好的方法是仅为TinyOS创建一个独立的开发VM环境,因为您并不真正希望在您的主机上有旧版本的Java。你可以用这样的方法来做。如何做到这一点将是太长的回答,检查出来

这是由于TinyOS构建工具链试图使用最新(版本9)Java中不推荐的Java功能造成的。您需要安装较旧的Java JRE版本,并将Java_主页设置为此较旧版本:

  • 首先在终端中键入
    Java-version
    检查当前的Java版本。如果不是版本9或更高版本,请停止-这可能不是您需要的解决方案
  • 去医院
  • 在“JavaSE”(SE代表“标准版”,这是我们需要的),选择一个旧版本。TinyOS正式支持版本1.4和5,但我知道版本7可以正常工作,因为这是我正在使用的版本。版本8也可以正常工作
  • 然后在“JavaSE运行时环境”下,选择Linuxx86(如果您使用的是32位Ubuntu)或Linuxx64(对于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文件中提取文件。例如,
    sudotarxvzf/usr/local/java/jre-8u73-linux-x64.tar.gz
  • (可选)现在可以删除
  • 您需要确保您有权执行下载的java。例如,您可以使用
    chown-rjre-8u73-linux-x64
  • 最后,需要将JAVA_HOME环境变量设置为指向刚刚创建的JAVA文件夹的位置。有。我建议在/etc/profile.d目录中创建一个文件(称为类似于java env.sh的文件),其中包含以下内容:
    
    导出JAVA_HOME=/usr/local/JAVA/jre-8u73-linux-x64
    导出路径=$PATH:$HOME/bin:$JAVA_HOME/bin
    
  • 您可能还需要告诉Ubuntu使用旧版本