2011-07-13 310 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

正確的轉義在這些帖子中同樣重要。 :-) –

相關問題