1

ログ メッセージを ANSI カラー コードで出力する Java フレームワークを作成しています。もちろん、ユーザーが Eclipse 内からそれを使用する可能性は常にあります。その場合、ANSI エスケープ コードがコンソールに文字化けして表示されます。ユーザーが手動でオフにする必要がないように、これを自動検出すると便利です。

この件についてグーグルで調べてみましたが、それは不可能だと思いますが、試した人はあまりいないので、尋ねる価値があると思いました. 頭に浮かぶ1つの方法は、動作するかどうかを確認することです"xterm".equals(System.getenv("TERM"))、多くの例外があり、Windowsではまったく動作しません(Windowsカラー端末のサポートも取得するためにJANSIライブラリを使用しています)。頭に浮かぶ別のオプションは、外部プログラムを呼び出して、呼び出されたプロセスが実行されているかどうかを確認しようとすることですが、これは汚いハックであり、エッジケースもあります (誰かがターミナルでプログラムを実行しているときに色が消えますエクリプス)。eclipse

端末の種類によって違うかもしれないと仮定して、リフレクションを使ってラッピングしているOutputStreamサブクラスを見つけようとさえしましたが、どうやらそれはどうでもいいことです。System.outFileOutputStream

組み込みの Eclipse コンソールで Java プログラムが実行されているかどうかを判断するためのハック的ではない方法はありますか?

4

3 に答える 3

0

日食で実行されたかどうかを検出できるかどうかはわかりませんが、jar として実行されているかどうかは検出できます。(Eclipse はフォルダーを jar ファイルではなく、クラスパスとしてロードします) ClassName.class.getResource と ClassName.class.getResourceAsStream を単純に比較します。getResourceAsStream は jar またはその他の環境で動作しますが、getResource は jar では動作しません (と思います)。

于 2013-08-12T03:31:07.740 に答える