Я пытаюсь выполнить команду оболочки через java
вот так
if (Program.isPlatformLinux())
{
exec = "/bin/bash -c xdg-open \"" + file.getAbsolutePath() + "\"";
exec2 = "xdg-open \"" + file.getAbsolutePath() + "\"";
System.out.println(exec);
}
else
{
//other code
}
Runtime.getRuntime().exec(exec);
Runtime.getRuntime().exec(exec2);
но вообще ничего не происходит. Когда я выполняю этот код, он печатает /bin/bash -c xdg-open "/home/user/Desktop/file.txt"
в консоли, но не открывает файл. Я также пытался сначала вызвать bash, а затем команду xdg-open
, но изменений нет.
В чем здесь проблема и как я могу это решить?
РЕДАКТИРОВАТЬ: вывод вызова выглядит следующим образом:
xdg-open "/home/user/Desktop/files/einf in a- und b/allg fil/ref.txt" xdg-open: неожиданный аргумент "in"
Но мне это кажется очень странным - почему команда стоит отдельно перед in
, даже если весь путь указан в кавычках?
Runtime.exec(String)
терпит неудачу, когда команда содержит кавычки. - person that other guy   schedule 13.11.2016