首頁 > Java > java教程 > Runtime.exec() 與 ProcessBuilder:為什麼我的指令會退出並顯示程式碼 1001?

Runtime.exec() 與 ProcessBuilder:為什麼我的指令會退出並顯示程式碼 1001?

Mary-Kate Olsen
發布: 2024-11-29 13:32:09
原創
705 人瀏覽過

Runtime.exec() vs ProcessBuilder: Why Does My Command Exit with Code 1001?

ProcessBuilder 與Runtime.exec():比較

從Java 執行外部指令時,開發者常會在使用Runtime 之間遇到困境。 getRuntime().exec(...) 和 new ProcessBuilder(...).start()。為了闡明這兩種方法之間的差異,讓我們詳細檢查它們的行為。

案例研究

在 Runtime.exec() 和ProcessBuilder 被用來執行特定的命令,出現了顯著的差異。使用 Runtime.exec(),指令成功終止,退出值為 0。但是,使用 ProcessBuilder 時,退出值為 1001,指令提前終止。

根本原因

差異在於 exec() 和 ProcessBuilder 處理指令參數的方式。 exec() 接受單一字串或字串陣列,將輸入標記為參數。相反,ProcessBuilder 需要一個 varargs 字串陣列或一個 List,其中每個元素都被視為一個單獨的參數。

解決問題使用 ProcessBuilder,確保命令參數作為單獨的字串提供。例如,不要使用以下內容:

Process p = new ProcessBuilder(
    "C:\DoStuff.exe -arg1 -arg2"
).start();
登入後複製

使用此:

Process p = new ProcessBuilder(
    "C:\DoStuff.exe", "-arg1", "-arg2"
).start();
登入後複製

或者,您可以建立List並將其傳遞給ProcessBuilder,如下所示:

List<String> params = Arrays.asList("C:\DoStuff.exe", "-arg1", "-arg2");
Process p = new ProcessBuilder(params).start();
登入後複製

以上是Runtime.exec() 與 ProcessBuilder:為什麼我的指令會退出並顯示程式碼 1001?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板