【发布时间】:2012-08-10 22:25:04
【问题描述】:
所以本质上,我正在尝试运行命令“/dir/command -arg”来更改 Java 中 USB 设备上的 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);
}
}
"hello" 打印,但仅此而已。没有错误。
我的其他命令不应产生任何输出,而只是更改 LED 的颜色。但是,当我使用相同的命令但产生输出的不同 arg 运行它时,它仍然只打印“hello”。
我还确保我的用户有权使用 USB 设备访问 /dev 文件夹。
【问题讨论】:
-
您如何确保您的用户对 USB 设备的 /dev 文件夹具有权限??
-
所以最初我得到“libusb 无法打开 USB 设备 /dev/bus/usb/002/003:权限被拒绝。”所以我去了“/dev/bus/usb”并使用 chown 将该文件夹中所有内容的所有者更改为我的用户。如果我在 Java 中使用“gnome-terminal”,就会出现这个用户。
-
当你没有实现
error stream时,你怎么能说没有没有错误 -
看看here
-
@user145181 如果您成功了,请继续添加您所做的答案(以便人们可以看到您所做的),然后接受它。