2016-04-23 8 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

"バージョン"ではなく "バージョン"を試してください –

+0

私もそれを試しました –

+0

正確には動作しません。それは例外を投げている、それはゼロ以外のコードを返していますか? –

答えて

4

のjava -versionの出力はエラーストリームに送信され、この

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); 
     } 

を試してみてください - ストリームが適切な出力

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

それは動作します。ありがとう –

関連する問題