Конструктор
ProcessBuilder
принимает команду, и каждая последующая строка обрабатывается как аргумент для первой строки, распознаваемой как основная команда.
Попробуйте заменить /bin/bash
на pandoc
и посмотрите, работает ли он.
Со своей стороны, я смог выполнить произвольную команду без помощи ProcessBuilder, используя вместо этого Runtime.getRuntime().exec(...)
, например:
public static void main(String[] args) throws Exception {
Process proc = Runtime.getRuntime().exec("cmd /c ipconfig");
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while((line = reader.readLine()) != null){
System.out.println(line);
}
}
Получение ожидаемого результата:
Configurazione IP di Windows
Scheda Ethernet Ethernet:
Suffisso DNS specifico per connessione:
Indirizzo IPv6 locale rispetto al collegamento . : fe80::fcba:735a:5941:5cdc%11
Indirizzo IPv4. . . . . . . . . . . . : 192.168.0.116
Subnet mask . . . . . . . . . . . . . : 255.255.255.0
Gateway predefinito . . . . . . . . . : 192.168.0.1
Process finished with exit code 0
Если вам действительно нужно использовать ProcessBuilder
, того же поведения можно добиться, определив свой Process
следующим образом:
Process proc = new ProcessBuilder("ipconfig").start();
просто вызывая команду, которую вы хотите запустить.