什么样的问题会导致Java的ProcessBuilder.start方法返回一个带有错误= 5的注释的IOException?
具体来说,我们已经看到一个远程客户系统运行一些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 \ example.exe argument1 argument2”可以通过cmd.exe手动成功运行,因此我们相信命令本身不会被破坏。
答案 0 :(得分:13)
error=5
表示以下其中一项:
1)文件不可执行
2)文件无法访问
编辑:不会抛出异常
3)命令(example.exe)退出,退出代码为5
答案 1 :(得分:6)
Alexandr是正确的,它的Windows安全性不允许该进程运行,但powershell命令对我没有用。这就是我的所作所为:
现在您的用户可以执行该程序。耶!
答案 2 :(得分:2)
有时会发生这种情况,因为您在代码中放置的路径不正确。对于Windows,将"\\"
设置为路径分隔符而不是"\"
例如,将路径更改为"C:\\example\\example.exe"
答案 3 :(得分:1)
由于Windows UAC,我有相同的例外。
即使您的帐户具有管理员权限,也可能发生这种情况。
为了能够运行这样的命令,我不得不使用powershell来提升权限。
powershell start-process 'start.bat' -Verb RunAs