2011-07-13 120 views
11

什么样的问题可能导致Java的ProcessBuilder.start方法返回一个IOException,并带有一个说明error = 5的注释?java.io.IOException的可能原因:CreateProcess错误= 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 \ example.exe argument1 argument2”可以通过cmd.exe手动成功运行,所以我们确信命令本身没有被破坏。

+2

可能是错误5是针对“访问被拒绝”。 (不知道) –

+0

我在android中有相同的问题http://stackoverflow.com/questions/39245238/errorcreateprocess-error-193-1-is-not-a-valid-win32-application –

回答

11

error=5装置之一:

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

EDIT:不会抛出异常
3)该命令(example.exe)用退出代码5退出

+0

谢谢 - 你能告诉我在哪里该信息可供将来参考? –

+0

[Windows预定义的退出代码](http://en.kioskea.net/faq/2347-error-codes-in-windows)和一些用于各种情况的ProcessBuilder实验 –

+4

我在Windows 7上也有这个错误。原因 ?基本上,我试图执行一个文件夹,而不是一个可执行文件:\哑巴错误 – Stephan

1

由于Windows UAC,我有相同的异常。

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

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

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

Alexandr是正确的,它的Windows安全性不允许该进程运行,但该powershell命令不适用于我。这里就是我所做的:

  • 打开Windows资源管理器,然后导航到example.exe
  • 右击它并选择“属性”
  • 转到“安全”选项卡,然后单击“编辑”按钮
  • 在机顶盒,并在底部有一个给予“完全控制”,选择您的用户名或者至少是“阅读&执行”
  • 单击确定以摆脱这些箱子

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

2

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

+0

正确的转义在这些帖子中同样重要。 :-) –

相关问题