7

私はEclipseでWebアプリを書いています。

ServiceLoaderクラスを使用していくつかのプラグインをロードしようとしています。

ServiceLoaderのドキュメントには、META-INF/servicesにファイルを配置する必要があると書かれています。

ファイルをWebContent/META-INF / serviceフォルダーに配置しましたが、Eclipseを介してJUnitテストを実行すると、プラグインが見つかりません。

これはファイルの正しい場所ですか?

また、ファイルを検索しているフォルダーなど、ServiceLoaderからより多くのデバッグ情報を取得するにはどうすればよいですか?

4

1 に答える 1

9

META-INF/services は、プラグインの検索に使用されるクラスローダーのクラスパス内の jar ファイルまたはリソース ディレクトリのルートにある必要があります。

Web アプリケーションがある場合、次のようなディレクトリ構造を持つことができます。

<webappname>/WEB-INF/classes/META-INF/services

しかし、理想的な方法は、プラグインの jar ファイルに含めることです。たとえば、プラグインが としてバンドルされていて、プラグWEB-INF/lib/myplugin.jarイン クラスが でcom.example.plugin.MyPlugin ある場合、jar は次の構造を持つ必要があります。

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin

これが完了したら、Web アプリケーションのクラス ローダーを使用してサービス ローダーを取得できます。

于 2010-08-06T05:23:19.513 に答える