0

外部 JAR ファイルから使用されている STDERR ストリームをインターセプトする方法はありますか?

私の状況では、XYZ に STDERR を使用する独自のプログラムと、ABC に STDERR を使用する外部 JAR があります。両方をマージしてエンドユーザー向けに正しくフォーマットしたいのですが、JAR の STDERR をキャッチまたはリダイレクトする方法 (正しい用語は何ですか?) がわかりません。

ありがとう、

4

2 に答える 2

2

Java プログラムの標準エラー ストリームは でSystem.err、標準出力ストリームはSystem.outです。

System.setErr(java.io.PrintStream)と System.setOut を PrintStream オブジェクトに使用して、これらの両方をオーバーライドできます。しかし、これはグローバルに置き換えられます。書式設定を行う PrintStream の実装を提供し、これを両方の標準エラー ストリームとして設定します。

2 つの異なるプロセスがある場合、別のプロセスのエラーストリームを (入力ストリームとして) 取得し、そこからコンテンツを読み取り (そこから)、標準エラー ストリームに書き込むことができます。

于 2010-08-08T18:13:37.907 に答える
0

簡単な解決策ではありませんが、選択したクラスのバイトコードを変更し、静的フィールド System.err へのすべての参照を置き換えるクラスローダー、Java エージェント、またはプリプロセッサを作成して、カスタム出力ストリームにアクセスすることができます。

于 2010-08-08T22:12:25.193 に答える