3

JavaのServiceLoaderでは、これらのエントリがJARファイル内に存在する必要があります。IDE内で、ユニットテストのために実行時にこれらのサービスエントリをプログラムで追加する方法はありますか?特にJARがまだビルドされていない場合。

4

1 に答える 1

7

JARファイルに集中しすぎないようにしてください。これらはサービスをカプセル化するための推奨される方法ですが、必須ではありません。重要なのは、実際ClassLoader.getResources(String)にはString-argが事実上。になる場所("META-INF/services/" + serviceClass.getName())です。覚えておくべきもう1つの情報ServiceLoader.load(Class)は、コンテキストクラスローダーを利用することです(もちろん、を利用することもできますServiceLoader.load(Class, ClassLoader))。だから...あなたが本当にする必要があるのは、クラスパスを操作するか、ServiceLoader幸せになるような方法でコンテキストクラスローダーを構成することです。

于 2010-06-30T19:17:51.213 に答える