Я пытаюсь получить доступ к пузырю уведомлений в Ubuntu через JavaСделать уведомление OSD с помощью Java
вот мой код
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);
}
}
Я получаю эту трассировку стеку в моей командной строке
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
В принципе я не могу понять перегрузки exec()
метода класса Runtime? Может ли кто-нибудь помочь мне в этом отношении?
Это работает. Какая перегрузка была использована? Что я сделал не так? – prometheuspk
@ Prometheus87: Это использует ту же самую перегрузку, но передаёт ссылку на массив из 4 строк, а не массив с * одной * строкой, содержащий как имя программы, так и * аргументы командной строки. –
Вы можете использовать String [], как это делает Джон, выше (один аргумент для элемента массива), или простая строка, содержащая весь текст, как вы пытались в своем примере. Проблема заключалась в том, что вы объединили два подхода. –