2012-09-09 23 views
1

我嘗試在java代碼中執行一個基本命令,即「java -version」。我的代碼工作的shell命令,例如「LS」,「回聲$ PATH」等 我的代碼:如何在java代碼中執行unix終端中的外部工具?

import java.io.*; 

public class cmd { 
    public static void main(String[] args) { 

     String command = "java -version"; 
     Process proc = null; 
     try { 
      proc = Runtime.getRuntime().exec(command); 
     } catch (IOException e1) { 
      System.out.println("IOException 1"); 
     } 

     BufferedInputStream buffer = new BufferedInputStream(proc.getInputStream()); 
     BufferedReader commandOutput= new BufferedReader(new InputStreamReader(buffer)); 
     String line = null; 
     try { 
      while ((line = commandOutput.readLine()) != null) { 
       System.out.println(line); 
      } 
      commandOutput.close(); 
     } catch (IOException e) { 
      System.out.println("IOException 2"); 
     } 
    } 
} 

代碼工作沒有異常或錯誤,但沒有輸出。

如果String命令=「ls」,代碼可以工作,輸出可以在控制檯中看到。

回答

1

檢查您擁有的Process對象的.getErrorStream().getOutputStream()。您可能會看到一條錯誤消息,告訴您需要指定java可執行文件的完整路徑才能運行。但是,如果原因不同,則在輸出提及的流的內容時也應該看到這一點。

+0

指定工具的完整路徑是有用的和正在工作。謝謝。 – hcakmak

+0

你應該至少得到錯誤流輸出 - 如果有任何其他錯誤,除了錯誤的路徑,沒有錯誤流,你將不會得到有關信息... – eis

+0

ps。如果你認爲這個答案解決了你的問題,請將答案標記爲已接受:) – eis

0

將命令的輸出重定向到像「ls> tempt.txt」這樣的臨時文件。這可能會解決問題

+0

重定向不起作用。該文件不會創建。 – hcakmak

相關問題