0
所以基本上,我試圖運行命令「/ dir/command -arg」來更改Java中的USB設備上的LED顏色。我正在使用Ubuntu 10.04。當我從終端運行命令時,它工作得很好。在Java中運行Bash腳本
但是,我嘗試了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文件夾。
您如何確保您的用戶對usb設備具有/ dev文件夾的權限? – 2012-08-14 15:20:07
所以最初我得到「libusb無法打開USB設備/ dev/bus/usb/002/003:權限被拒絕。」所以我去了「/ dev/bus/usb」並使用chown將該文件夾中的所有者更改爲我的用戶。這是如果我在Java中使用「gnome-terminal」時出現的用戶。 – user145181 2012-08-14 15:22:12
你怎麼說有**沒有錯誤**當你沒有實現'錯誤流' – 2012-08-14 15:28:19