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

20

什么问题可能导致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手动成功运行,因此我们有信心该命令本身并没有问题。

2
可能错误5是指“拒绝访问”。(不确定) - Harry Joy
我在Android上遇到了同样的问题:http://stackoverflow.com/questions/39245238/errorcreateprocess-error-193-1-is-not-a-valid-win32-application - Aditya Vyas-Lakhan
在库后添加以下内容:os.environ['PYSPARK_PYTHON'] = sys.executable os.environ['PYSPARK_DRIVER_PYTHON'] = sys.executable - JAGJ jdfoxito
在导入库之后添加以下代码:os.environ['PYSPARK_PYTHON'] = sys.executable os.environ['PYSPARK_DRIVER_PYTHON'] = sys.executable - JAGJ jdfoxito
4个回答

14

error=5 表示以下一个或多个错误:

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

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


谢谢 - 你能告诉我这些信息在哪里可以查到,以备将来参考吗? - Matt Sheppard
Windows 预定义的退出代码以及对于各种情况使用 ProcessBuilder 进行一些实验。 - Op De Cirkel
9
我也在Windows 7上遇到了这个错误。原因是什么呢?基本上,我试图执行一个文件夹而不是可执行文件 :\ 愚蠢的错误。 - Stephan
请问您能介绍一下这个错误吗?Error:CreateProcess error=193, %1 is not a valid Win32 application. - Aditya Vyas-Lakhan

9

亚历山大说得没错,是Windows安全系统不允许该进程运行,但我尝试了那个powershell命令,它并没有起作用。以下是我做的:

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

现在,您的用户可以执行该程序。太棒了!


2
有时候这是因为您在代码中输入的路径不正确。对于Windows系统,请使用"\\"作为路径分隔符,而不是"\"。例如将路径更改为"C:\\example\\example.exe"

这些帖子中适当的转义同样重要。 :-) - Bo Persson
我在Java中观察到了这个异常,如果我们只使用目录而不是启动进程的可执行文件或库。因此,请检查代码是否需要直接路径到可执行文件。 - undefined

1

由于Windows UAC,我遇到了相同的异常。

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

为了能够运行此类命令,我必须使用PowerShell提升权限。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接