【问题标题】:Possible causes of java.io.IOException: CreateProcess error=5java.io.IOException的可能原因:CreateProcess error=5
【发布时间】:2011-07-13 05:26:52
【问题描述】:

什么样的问题会导致 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\example.exe argument1 argument2”可以通过 cmd.exe 手动成功运行,因此我们确信该命令本身没有损坏。

【问题讨论】:

标签: java windows


【解决方案1】:

error=5 表示以下之一:

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

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

【讨论】:

  • 谢谢 - 你能告诉我这些信息在哪里可供将来参考吗?
  • Windows predefined exit codes 并在各种情况下使用 ProcessBuilder 进行一些试验
  • 我在 Windows 7 上也遇到了这个错误。原因 ?基本上,我试图执行一个文件夹而不是一个可执行文件:\ Dumb error
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 正确的转义在这些帖子中同样重要。 :-)
    【解决方案4】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2012-01-21
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 2017-10-18
      • 1970-01-01
      相关资源
      最近更新 更多