Я пытаюсь запустить программу из командной оболочки Windows из Java и испытывать ошибки, которые я не могу решить самостоятельно. Я использую ProcessBuilder для передачи аргументов командной оболочки.Java ProcessBuilder игнорирует пробелы
Отрывок:
try{
List<String> list = new ArrayList<String>();
list.add("cmd.exe");
list.add("/c");
list.add("C:\\Program Files (x86)\\TightVNC\\tvnserver.exe -controlservice -connect 172.20.242.187");
ProcessBuilder builder = new ProcessBuilder(list);
System.out.println(builder.command());
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while(true){
line = r.readLine();
if(line == null) { break; }
System.out.println(line);
}
} catch {...}
Моя проблема заключается в том, что пробелы в пути к программе игнорируются. Консольный вывод:
[cmd.exe,/с, C: \ Program Files (x86) \ TightVNC \ tvnserver.exe -controlservice -connect 172.20.242.187] Der Befehl "C: \ Program" IST entweder falsch geschrieben oder konnte nicht gefunden werden.
(C: \ Program не может быть найден).
В Интернете я нашел подобные проблемы даже на StackOverflow и других веб-сайтов сделал это именно так, как я сделал, см пример на Run cmd commands through java с той разницей, я передал аргументы в виде списка, указанного в http://www.tutorialspoint.com/java/lang/processbuilder_command_list.htm
Так что я не понимаю, почему моя команда не работает. Я ценю любую помощь
Редактировать Мне нужно добавить путь динамически, поэтому я не могу передать аргументы при создании объекта ProcessBuilder.
Попробуйте добавить двойные qoutes Arround ' "\" C: \\ Program Files (x86) \\ TightVNC \\ tvnserver.exe \ "-controlservice -connect' 172.20.242.187 " – Jens