Возможные причины java.io.IOException: ошибка CreateProcess = 5 - PullRequest
15 голосов
/ 13 июля 2011

Какие проблемы могут привести к тому, что Java-метод ProcessBuilder.start вернет IOException с запиской, в которой говорится об ошибке = 5?

В частности, мы видели, как удаленная клиентская система выполняла некоторый Java-код вместестроки ...

ProcessBuilder pb = new ProcessBuilder(cmdArray);
pb.redirectErrorStream(true);
Process p = pb.start();

... выбрасывают исключения вроде этого ...

java.io.IOException: CreateProcess: C:\example\example.exe argument1 argument2 error=5
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at example_code_above

Мы подтвердили, что команда отметила в исключении "C: \ пример\ example.exe аргумент1 аргумент2 "может быть успешно запущен вручную с помощью cmd.exe, поэтому мы уверены, что сама команда не нарушена.

Ответы [ 4 ]

13 голосов
/ 13 июля 2011

error=5 означает одно из:

1) файл не является исполняемым
2) файл недоступен

РЕДАКТИРОВАТЬ : не будет выбрасывать исключение
3) команда (example.exe) завершается с кодом выхода 5

6 голосов
/ 01 июля 2014

Александр прав, это безопасность Windows, которая не позволяет запускать этот процесс, но эта команда powershell у меня не сработала. вот что я сделал:

  • Откройте проводник Windows и перейдите к файлу example.exe
  • Щелкните правой кнопкой мыши и выберите «Свойства»
  • Перейдите на вкладку «Безопасность» и нажмите кнопку «Изменить»
  • Выберите ваше имя пользователя в верхнем поле, а в нижнем поле укажите «Полный доступ» или, по крайней мере, «Чтение и выполнение»
  • Нажмите OK, чтобы избавиться от этих ящиков

Теперь ваш пользователь может выполнить эту программу. Ура!

2 голосов
/ 26 июля 2016

Иногда это происходит потому, что путь, который вы указали в коде, неверен.Для окон укажите "\\" в качестве разделителя пути вместо "\" Например, измените путь на "C:\\example\\example.exe"

1 голос
/ 24 февраля 2014

У меня такое же исключение из-за Windows UAC.

Это может произойти, даже если ваша учетная запись имеет права администратора.

Чтобы выполнить такую ​​команду, мне пришлось использовать powershell для повышенияпривилегии.

powershell start-process 'start.bat' -Verb RunAs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...