2016-04-23 34 views
2

我正在使用以下代碼來打印java.exe的版本。 (這個java.exe不是當前正在運行的java.exe)。我不知道爲什麼它不工作。需要在java中獲得另一個java.exe版本

List commands = new ArrayList(); 
    commands.add("C:\\Program Files\\Java\\jdk1.7.0_79\\bin\\java.exe"); 
    commands.add("version"); 
    ProcessBuilder pb = new ProcessBuilder(commands); 
    System.out.println("Running command"); 
    Process process = pb.start(); 
    int errCode = process.waitFor(); 
    System.out.println("command executed, any errors? " + (errCode == 0 ? "No" : "Yes")); 
    System.out.println("Output:\n" + output(process.getInputStream())); 
+1

嘗試使用「-version」而不僅僅是「版本」 –

+0

我也試過了 –

+0

究竟是什麼不起作用?它是否拋出異常,是否返回非零代碼? –

回答

4

試試這個

List<String> commands = new ArrayList<String>(); 
commands.add("C:\\Program Files\\Java7\\jdk1.7.0_79\\bin\\java.exe"); 
commands.add("-version"); 
ProcessBuilder pb = new ProcessBuilder(commands); 
     // pb.directory(new File("C:\\Program Files\\Java7\\jdk1.7.0_79\\bin")); 
Process p = pb.start(); 
int errCode = p.waitFor(); 
System.out.println(errCode); 
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
String s = null; 
while ((s = stdInput.readLine()) != null) { 
      System.out.println(s); 
     } 

Java的版本的輸出發送到錯誤流 - 從 讀取流應導致正確的輸出

OUTPUT:

java version "1.7.0_79" 
Java(TM) SE Runtime Environment (build 1.7.0_79-b15) 
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) 
+0

它的工作原理。謝謝 –

相關問題