2
を経由してOSDの通知を行いますと、私は、コマンドラインでは、私がここにjavaの</p> <p>を通じてUbuntuので通知バブルにアクセスしようとしていたJava
Exception in thread "main" java.io.IOException: Cannot run program "/usr/bin/notify-send -t 10000 "Hello OSD" "This is my first programmatic OSD notification"": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)
at TestOSD.main(TestOSD.java:6)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 3 more
をこのスタックトレースを取得しています私のコード
class TestOSD{
public static void main(String[] args) throws Exception{
String[] cmmd = {"/usr/bin/notify-send -t 10000 \"Hello OSD\" \"This is my first programmatic OSD notification\""};
System.out.println("This is said : Hello OSD");
Runtime.getRuntime().exec(cmmd);
}
}
です
基本的に私はランタイムクラスのexec()
メソッドのオーバーロードを理解できませんか?誰でもこの点で私を助けることができますか?
これは機能します。どの過負荷が使用されたか?私は何が間違っていたのですか? – prometheuspk
@ Prometheus87:同じオーバーロードを使用していますが、プログラム名*と*コマンドライン引数の両方を含む* 1文字列の配列ではなく、4文字列の配列への参照を渡しています。 –
Jonが上記のようにString [](配列要素ごとに1つのarg)を使用することも、あなたの例で試していたようにすべてのテキストを含むプレーンストリングを使用することもできます。問題は2つのアプローチを組み合わせたことでした。 –