基本上,我试图运行命令“/ dir / command -arg”来改变Java设备上的LED颜色。我正在使用Ubuntu 10.04。当我从终端运行命令时,它运行正常。
但是,我尝试了我能找到的Runtime.exec()的每一次迭代,但它们似乎都不起作用。然后我创建了一个包含以下内容的脚本:
#!/bin/bash
echo "hello"
/dir/command -arg
当我从终端运行它时它工作得很好。但是当我跑步时
@Override
public void run() {
String[] lookupCmd = {"/bin/sh","-c", "sh /dir/script.sh"};
try {
Runtime runtime = Runtime.getRuntime();
Process lookupProc = runtime.exec(lookupCmd);
lookupProc.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(lookupProc.getInputStream()));
String line = reader.readLine();
while (line != null) {
id.add(line);
System.out.println(line);
line = reader.readLine();
}
} catch (Exception e) {
System.err.println(e);
}
}
“你好”打印但没有别的。没有错误。
我的其他命令不应该产生任何输出,而只是改变LED的颜色。但是当我使用相同的命令运行它但产生输出的不同arg时,它仍然只打印“hello”。
我还确保我的用户拥有使用usb设备的/ dev文件夹的权限。
答案 0 :(得分:0)
我没有运行错误流,所以我添加了。
之后我意识到我错过了一个环境变量,所以补充说:
String[] envar = {"VAR=path"}
并致电:
runtime.exec(lookupCmd, envar);
现在很棒。