Java ProcessBuilder не выполняет команду, но также не возвращает ошибку - PullRequest
0 голосов
/ 12 апреля 2019

Выполнение следующего кода отлично работает на моем компьютере, но не работает при запуске nginx-clojure на моем сервере.

ProcessBuilder pb = new ProcessBuilder("/usr/bin/vorbiscomment", "-w", "-t", "\"title=MySong\"", "-t", "\"artist=SomeArtist\"", "\"/media/music/SomeArtist/MySong.ogg\"");

Справочная информация:

Я работаю над REST APIдля музыкального проекта.Он использует модуль nginx (nginx-clojure) для встраивания программ Java.Моя цель сейчас - редактировать теги vorbis с помощью утилиты командной строки unix vorbiscomment и Java ProcessBuilder.Код работает на моем компьютере, что заставляет меня поверить, что оно может иметь отношение к разрешениям на сервере.Моя проблема в том, что я не получаю никакого вывода от ProcessBuilder, указывающего, что команда завершилась неудачно.Я попытался:

Process proc = pb.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
{
    sb.append(line).append('\n');
}
return sb.toString();

, который ничего не выводил.

Буду признателен за любую помощь.

1 Ответ

2 голосов
/ 12 апреля 2019

Вы читаете из InputStream Process.Вы должны смотреть на Process.getErrorStream() или Process.getOutputStream().

https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

. Вы также можете проверить exitValue , чтобы увидеть, успешно ли завершен процесс.

...