Я пытаюсь скопировать файл изображения и установить его в качестве фона, используя Java ProcessBuilder для запуска сценария оболочки в Ubuntu.
При запуске сценария самостоятельно из терминала он выполняется без проблем, как и ожидалось.
т.е. ./changeBG.sh "jpg"
Однако при запуске изнутри Java я получаю вывод о том, что процесс завершен, но после проверки файлового менеджера я вижу, что cp никогда не запускаетсяи я получаю черный фон, когда запускаю следующую команду для изменения фона.
Подсказки о том, почему cp не происходит, будут высоко оценены.
Сценарий:
#!/bin/bash
mkdir -p /home/$USER/Pictures/Wallpapers
/bin/cp -rf ./images/newimage.$1
/home/$USER/Pictures/Wallpapers/background.$1
gsettings set org.gnome.desktop.background picture-uri "file:///home/$USER/Pictures/Wallpapers/background.$1"
echo done
Java-код:
try {
String cmd= "./changeBG.sh \"" + currentIMGext + "\"" ;
System.out.println(cmd);
ProcessBuilder bd = new ProcessBuilder(cmd.split(" "));
Process ps = bd.start();
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
String currentLine;
while (true) {
currentLine = br.readLine();
if (currentLine == null) {
break;
}
System.out.println(currentLine);
}
} catch (Exception e2){
e2.printStackTrace();
}
Java-вывод:
./changeBG.sh "jpg"
done