- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[JAVA]ProcessBuilderで「java -version」を実行できない)
[JAVA]ProcessBuilderで「java -version」が実行できない
このQ&Aのポイント
- JavaのProcessBuilderを使用して「java -version」を実行できないエラーが発生する
- プログラムの実行時にエラーが発生し、「java -version」を実行する際に問題が発生する
- ProcessBuilderを使用してJavaのバージョンを取得する際にエラーが発生する
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
バージョン情報は標準エラー出力されるので。 p.getErrorStream(); ですね。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
たぶん, 「java -version」の*標準出力*を読み込んで表示するという意味でプログラムは正しく動作していると思います.
質問者
お礼
まあそうなんですけど
- ProKaseifu
- ベストアンサー率51% (98/192)
回答No.1
new String[]{"java", "-version"} ではないでしょうか。
質問者
補足
import java.io.*; public class test4518 { public static void main(String[] args) throws Throwable{ ProcessBuilder pb = new ProcessBuilder(new String[]{"java", "-version"}); Process p = pb.start(); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { System.out.println(line); } } } --- 上記で実行したところエラーはでなくなりましたが、コンソールに何もでません。ちなみにJVMのバージョンは1.5.20です
お礼
無事表示できました ーーー import java.io.*; public class test4518 { public static void main(String[] args) throws Throwable{ String command = "java -version"; ProcessBuilder pb = new ProcessBuilder(command.split(" ")); Process p = pb.start(); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br = new BufferedReader(new InputStreamReader(p.getErrorStream())); while ((line = br.readLine()) != null) { System.err.println(line); } } }