Странная проблема получения входных данных от getInputStream - PullRequest
0 голосов
/ 27 ноября 2009

Вот мой код:

    Runtime re = Runtime.getRuntime();
    BufferedReader output = null;    

    try{
            Process cmd = re.exec("java -jar myProg.jar " + myArgument); 
            output =  new BufferedReader(new InputStreamReader(cmd.getInputStream()));
        }

    catch (Exception e){
            e.printStackTrace();
    }

   String line;
   while ((line = output.readLine()) != null)
   {
    //process line
   }

При отладке этого фрагмента кода я обнаружил, что при чтении каждой строки из вывода она пропускает определенные строки.

Если я запускаю этот myProg.jar из командной строки, текст, который отображается в моей командной строке, не на 100% совпадает с тем, что я получаю, когда обрабатываю вывод изнутри моей Java-программы!

Что может вызвать это? Вывод всего текста.

1 Ответ

3 голосов
/ 27 ноября 2009

Похоже, вы только читаете стандартное значение, в то время как вы можете получать вывод и при стандартной ошибке. Я бы прочитал оба.

Обратите внимание, что вам нужно читать оба потока одновременно , чтобы избежать блокировки. См. этот ответ для более подробной информации.

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