1

我正在尝试从 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

我想我错过了一些与标准输出相关的东西,但我已经玩了几个小时了,只是无法正确处理。

谢谢

4

1 回答 1

2

java查找二进制文件或定位类可能存在问题makeQRCode。检查Process.

BufferedReader error = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
String errorLine = null;
while ((errorLine = input.readLine()) != null) {
   System.out.print(errorLine);
}
于 2013-05-23T22:11:08.810 回答