什么样的问题可能会导致Java的ProcessBuilder.start方法返回一个IOExceptionexception,并loggingerror = 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手动成功运行,所以我们确信命令本身没有被破坏。
error=5
表示以下之一:
1)文件不可执行
2)文件不可访问
编辑 :不会抛出异常
3)命令(example.exe)以退出代码5退出
Alexandr是正确的,这是Windows安全,不允许该进程运行,但该PowerShell命令不适用于我。 这是我做的:
现在你的用户可以执行该程序。 好极了!
有时候会发生这种情况,因为你放在代码中的路径是不正确的。 对于Windows将"\\"
作为路径分隔符而不是"\"
例如将路径更改为"C:\\example\\example.exe"
由于Windows UAC,我有同样的例外。
即使您的帐户具有管理员权限,也会发生这种情况
为了能够运行这样的命令,我必须使用powershell来提升权限。
powershell start-process 'start.bat' -Verb RunAs