2013-05-27 1 views
1

У меня есть этот код:Java запустить с программой с параметрами

try { 
    Process p = new ProcessBuilder(
      "/Applications/TorBrowser_en-US.app/Contents/MacOS/./tor", 
      "-f /Applications/TorBrowser_en-US.app/Library/filetctor/torrc") 
      .start(); 
    p.waitFor(); 
    int exitVal = p.exitValue(); 
    System.out.println("Process exitValue: " + exitVal); 
} catch (IOException e) { 
    System.out.println(e); 
} catch (InterruptedException e) { 
    System.out.println(e); 
} 

Каждый раз, когда я исполняю его, я получаю 255 exitValue. Процесс не работает должным образом.

Если я запустить программу с только:

Process p = new ProcessBuilder("/Applications/TorBrowser_en-US.app/Contents/MacOS/./tor").start(); 

Процесс работает правильно. Но мне нужно использовать опцию -f.

В чем проблема? Я пишу это неправильно?

+0

The '-f' и путь к файлу должен быть почти наверняка отдельные параметры. –

+0

Вы пытались запустить приложение самостоятельно? Какая ошибка возвращается? Попробуйте и получите его с помощью 'getInputStream()' или 'getErrorStream()'. – Djon

ответ

3

Каждый аргумент должен быть отдельной строкой, а не только в отдельной строке, разделенной пробелом.

the example in the documentation См:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");

+0

Процесс p = новый ProcessBuilder ("/ Applications/TorBrowser_en-US.app/Содержание/MacOS /./ tor", "-f", "/Applications/TorBrowser_en-US.app/Library/filetctor/torrc").start(); РАБОТЫ –

+0

@MarcoMicheli Отлично! Не стесняйтесь принять этот ответ, щелкнув галочкой слева. – unwind