簡體   English   中英

無法使用processBuilder執行linux命令

[英]Not able to execute linux command using processBuilder

我使用Processbuilder如下:

            List<String> args = initArgs();
            ProcessBuilder pb = new ProcessBuilder(args);
            tdmServerProcess = pb.start();

            handleInfoLog(tdmServerProcess.getInputStream());
            handleErrorLog(tdmServerProcess.getErrorStream());

initArgs方法中,我正在設置要執行的linux命令,如下所示:

args.add("java -version");
args.add(javaHome + File.separator + "bin" + File.separator + "java");

第一條命令成功執行。 但是第二個失敗,並顯示以下錯誤:

/ opt / java7 / bin / java:無法執行二進制文件

雖然我具有執行權限,但以下是權限位:

-r-xr-xr-x 

我可以從終端執行相同的命令。

錯誤“無法執行二進制文件”表示Java文件無效。 也許'java -version'實際上是從路徑中的另一個位置運行Java,而/ opt / java7 / bin / java無效。 嘗試手動運行“ / opt / java7 / bin / java”,然后檢查結果。 通過使用與您運行Java代碼的用戶相同的用戶運行which java還可以檢查Java在路徑中的位置。

您顯然正在嘗試執行兩個單獨的命令,首先是“ java -version”,然后是“ / opt / java7 / bin / java”?

那不是它的工作原理。 而是,將附加所有參數並啟動一個過程。 在您的情況下,命令是“ java -version / opt / java7 / bin / java”

嘗試在控制台上運行它-我敢打賭,您會遇到相同的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM