「Picked up _JAVA_OPTIONS」メッセージの抑制


13

_JAVA_OPTIONSを使用して、RHEL上のJavaのデフォルトを設定しています。それはうまく動作しますが、今ではjavaを起動するたびに次のメッセージが表示されます

 Picked up _JAVA_OPTIONS: -foo -bar -baz

オプションを保持しながら、このメッセージの表示を抑制することは可能ですか?

回答:


11

Javaはのような絶対パスで呼び出されることがよく/usr/bin/javaあります。これにより、この答えが役に立たない場合があり、他の環境で動作させるためにはさらに多くのことが必要になります。

私が見つけたソリューションでは、問題のある行を削除するフィルターを介してSTDERRをリダイレクトするラッパーシェルスクリプトを記述する必要があります。$PATHJavaバイナリがラップする前に配置し、plain javawhich javaまたは同様のもので呼び出す必要があります(または、使用するようにツールを構成する必要があります)

括弧付きのサブシェルを作成し、(command)javaのSTDERRをSTDINにリダイレクトするのは、bashの機能に依存していますcommand1 2> >(command2)。最後に、サブシェルのプロセスは、フィルタリングされた入力を再度STDOUTにリダイレクトして、Javaプログラムが引き続きSTDERRを使用できるようにする必要があります。

#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)

恐ろしい練習かもしれませんが、それはドッカー画像のためであり、その間にすべての赤にうんざりしていましたdocker buildが、名前${JAVA_HOME}/bin/javajava2変更して、このスクリプトの変更バージョンをjava(with chmod +x)としてそこに入れました。魅力のように働いた!
BrainSlugs83

2

または、これをシェルスタートアップ/プロファイルファイルに入れることができます。

_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'

これはjava ...、コマンドラインから直接呼び出す場合にのみ機能します。すべてのスクリプトまたは他の親プロセスを通じてJavaの呼び出しは影響を受けません
飛んで羊

まあ、/ bin / javaを、本当にしたい場合は同じことをするシェルスクリプトに変更できます。
spelufo

設定しなくてもオプションの設定が解除されるため、他のコマンドも影響を受けます。オプションを渡さないことでそれらを黙らせます:)。
spelufo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.