java.io.IOException的可能原因:CreateProcess error = 5

时间:2011-07-13 05:26:52

标签: java windows

什么样的问题会导致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手动成功运行,因此我们相信命令本身不会被破坏。

4 个答案:

答案 0 :(得分:13)

error=5表示以下其中一项:

1)文件不可执行
2)文件无法访问

编辑:不会抛出异常
3)命令(example.exe)退出,退出代码为5

答案 1 :(得分:6)

Alexandr是正确的,它的Windows安全性不允许该进程运行,但powershell命令对我没有用。这就是我的所作所为:

  • 打开Windows资源管理器,然后导航到example.exe
  • 右键单击它并选择&#34;属性&#34;
  • 转到&#34;安全&#34;选项卡并单击&#34;编辑&#34;按钮
  • 在顶部框中选择您的用户名,在底部选择&#34;完全控制&#34;或者至少&#34;阅读&amp;执行&#34;
  • 点击确定以删除这些框

现在您的用户可以执行该程序。耶!

答案 2 :(得分:2)

有时会发生这种情况,因为您在代码中放置的路径不正确。对于Windows,将"\\"设置为路径分隔符而不是"\"例如,将路径更改为"C:\\example\\example.exe"

答案 3 :(得分:1)

由于Windows UAC,我有相同的例外。

即使您的帐户具有管理员权限,也可能发生这种情况。

为了能够运行这样的命令,我不得不使用powershell来提升权限。

powershell start-process 'start.bat' -Verb RunAs