Невозможно запустить исполняемый файл с ProcessBuilder в Java - PullRequest
0 голосов
/ 26 января 2012

Я пытаюсь запустить exe-файл, задав для него некоторые параметры, например:

myExePath -ini myIniPath -x myConfigFilePath

Когда я запускаю его из командной строки, он работает отлично. Но когда я пытаюсь запустить его из своего Java-кода, процесс запускается, но через некоторое время больше не отвечает, поэтому я вынужден принудительно закрыть его. Я использую этот код Java:

    List<String> parameters = new ArrayList<String>();
    parameters.add(myexePath);
    parameters.add("-ini ");
    parameters.add(myIniPath);
    parameters.add("-x ");
    parameters.add(myConfigPath
    ProcessBuilder builder = new ProcessBuilder(parameters);
    Process process = builder.start();

    try {
        process.waitFor();
    } catch (InterruptedException e) {
        System.err.println("Process was interrupted");
    }

Есть идеи, что я делаю не так?

Ответы [ 3 ]

1 голос
/ 26 января 2012

Использует ли exe stdout, stderr, stdin? Вы должны всегда читать с них или закрывать их. В зависимости от реализации и размера буфера не чтение из них может привести к блокировке.

0 голосов
/ 26 января 2012

Полагаю, вы должны сначала получить ссылку на Runtime.

Вы могли бы сделать это
Runtime.getRuntime().exec(parameters.toString());

Ваша строка из списка параметров может нуждаться в битовом форматировании.

0 голосов
/ 26 января 2012

Я не уверен, помогает ли это, но почему вы используете пробелы? например: parameters.add("-x "); Вам они не нужны.

То, что вы также можете попробовать, это поместить все ваши параметры в массив и использовать другой конструктор ProcessBuilder, который принимает массив в качестве аргумента.

...