Проблемы с выходом чтения BufferedReader из CMD Processbuilder (JAVA)? - PullRequest
0 голосов
/ 06 мая 2019

У меня проблемы с использованием ProcessBuilder, Process и BufferedReaders в моей Java-программе. Для некоторых входов функция работает отлично, но с другими BufferedReader ничего не читает и возвращает пустые строки. Я не уверен, что может быть причиной этой ошибки.

Я пробовал отладку, и для тех ситуаций, когда ничего не читается, BufferedReader полностью пропускает цикл. Например, когда я передаю команду как 'ipconfig', которая имеет> 50 строк вывода CMD, она возвращает каждую строку в точности так, как отображается. Но когда я передаю команду как 'java -version', она полностью пропускает вывод (нужно прочитать 3 строки).

ProcessBuilder / Функция чтения:

public static String runCommandToStdOut(String command) throws InterruptedException, IOException {
        StringBuilder sBuilder = new StringBuilder();
        pBuilder = new ProcessBuilder();
        String[] processArray = command.split(" ");
        pBuilder.command(processArray);
        process = pBuilder.start();
        process.waitFor();
        BufferedReader bReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        //reading cmd output to string
        String line = "";
        while ((line = bReader.readLine()) != null) {
            sBuilder.append(line);
            sBuilder.append(System.getProperty("line.separator"));
        }
        return sBuilder.toString();
    }

Как я вызываю функцию:

try {
            String stdOut = osCommandService.runCommandToStdOut("java -version");
}

Строка stdOut во втором разделе кода пуста. Это означает, что строка sBuilder.toString является пустой строкой после запуска функции. Вывод, который я вижу, когда я запускаю 'java -version' непосредственно в моей командной строке, имеет длину 3 строки, что, очевидно, не читается должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...