2013-05-23 4 views
1

Я пытаюсь захватить вывод из приложения java, но я чего-то не хватает. Я использую следующий пакетный файл:Захват вывода из java

@echo off 
echo Start of batch 
java makeQRCode 
echo End of batch 

Если я запустить пакетный файл из командной строки, я вижу 3 строки я ожидал.

Start of batch 
Here is your java output. 
End of batch 

Когда я звоню пакетный файл, используя следующий код, я вижу только первые и последние строки, но не один в середине.

try{ 
    Runtime rt = Runtime.getRuntime(); 
    log.debug("Calling rt.exec..."); 
    Process pr = rt.exec("c:\\adhoc\\java\\qrcode\\makeQRCode.bat"); 

    BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
    String line=null; 
    while((line=input.readLine()) != null) { 
     out.print(line); 
     log.debug(line); 
    } 
    input.close(); 

    int exitVal = pr.waitFor(); 
}catch (Exception e){ 
    log.error("Error generating qr code: " + e.toString()); 
}  

Вот мой выход журнала, когда приведенный выше код запускается:

2013-05-23 17:16:32,957 DEBUG _getimage - Start of batch 
2013-05-23 17:16:33,126 DEBUG _getimage - End of batch 

Я думаю, что я что-то отсутствует, связанный стандартный вывод, но я сейчас играет с ним часами и просто не могу» Правильно.

Благодаря

ответ

2

Там может быть проблема либо нахождение java двоичном или местонахождение makeQRCode класса. Проверьте поток ошибок Process.

BufferedReader error = new BufferedReader(new InputStreamReader(pr.getErrorStream())); 
String errorLine = null; 
while ((errorLine = input.readLine()) != null) { 
    System.out.print(errorLine); 
} 
+0

Это именно то, что было проблемой! Благодаря! –

Смежные вопросы