1

別の java.util.Logging.LogManager 実装を選択して、Eclipse プラグインで使用し、残りの Eclipse では使用しないようにするにはどうすればよいですか?

私のプラグインは、LogManager.getLogManager() を呼び出すサード パーティのライブラリを使用しているため、独自の LogManager インスタンスを渡すことができません。

LogManager クラスの静的初期化子が実行される前に、Java システム プロパティ「java.util.logging.manager」を介して LogManager 実装を選択できますが、LogManager クラスは、プラグインがアクティブ化されるずっと前にブートストラップ クラス ローダーによってロードされます。

Eclipse-BuddyPolicy または Bundle-ClassPath を使用してカスタム クラス ローダーを使用することを考えていました。これは、ブートストラップ クラス ローダーに委譲せず、代わりに java.util.Logging.LogManager の独自のコピーをロードしますが、java.* のクラスをロードします。パッケージは通常、カスタム クラス ローダーではロードできません。

4

1 に答える 1

0

JDK-6448699 LogManager がログ ハンドラを正しくロードしない、およびJDK-6878454 LogManager クラスのロードが Java EE のベスト プラクティスと矛盾する を回避できれば、カスタム クラス ローダーのアイデアが機能する可能性があります。

LogManager は、JVM に対してグローバルであると想定されています。したがって、実際には、必要なことを行う独自の LogManager を実装し、全員に使用させる必要があります。Eclipse、サードパーティのライブラリ、およびプラグインは、どの LogManager がインストールされているかを気にする必要はありません。

于 2013-11-18T15:38:46.837 に答える