したがって、基本的に、コマンド「/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);
}
}
「こんにちは」と表示されますが、他には何もありません。エラーはありません。
私の他のコマンドは何も出力しないはずですが、単に LED の色を変更するだけです。ただし、同じコマンドで出力を生成する別の引数を使用して実行すると、「hello」のみが出力されます。
また、ユーザーが USB デバイスを使用して /dev フォルダーへのアクセス許可を持っていることも確認しました。