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

stdout に関連する何かが欠けていると思いますが、何時間も遊んでいて、正しく理解できません。

ありがとう

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 に答える