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

Mat*_*ard 16 java windows

什么样的问题会导致Java的ProcessBuilder.start方法返回一个带有错误= 5的注释的IOException?

具体来说,我们已经看到一个远程客户系统运行一些Java代码......

ProcessBuilder pb = new ProcessBuilder(cmdArray);
pb.redirectErrorStream(true);
Process p = pb.start();
Run Code Online (Sandbox Code Playgroud)

...抛出这样的异常......

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
Run Code Online (Sandbox Code Playgroud)

我们已经确认在异常"C:\ example\example.exe argument1 argument2"中注明的命令可以通过cmd.exe手动成功运行,因此我们相信命令本身不会被破坏.

Op *_*kel 13

error=5 意指之一:

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

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

  • 我在Windows 7上也有这个错误.原因 ?基本上,我试图执行一个文件夹而不是可执行文件:\ Dumb错误 (5认同)

Rya*_*ton 7

Alexandr是正确的,它的Windows安全性不允许该进程运行,但powershell命令对我不起作用.这就是我做的:

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

现在您的用户可以执行该程序.好极了!