2013-11-26 21 views
5

私は1つのインタフェースcom.example.Markerを持っており、これには1つの実装、例えばcom.example.MarkerImplAがあるとします。そのうちの一つは、登録を取得するために、私はこの1つのJARに複数のSPI実装を持たせる方法

com.example.MarkerImplA 

ように見えるMETA-INF/services/com.example.Markerでテキストファイルを配置する必要がありますこれは、シャルムのように動作します。さて、同じjarファイルに別の実装、例えばcom.example.MarkerImpl2があります。どのようにして2番目の登録を達成できますか?

答えて

11

あなたのSPIが取るの詳細についてはcom.example.Marker

META-INF/services/com.example.Marker 

新しい行に各実装を追加

com.example.MarkerImplA 
com.example.MarkerImplB 
com.example.MarkerImplC 

ある場合だけので、完全修飾プロバイダのクラス名と

を複数の行を追加します。見てくださいJAR File Specification

プロバイダコンフィグレーションファイル

サービスプロバイダは、プロバイダ設定ファイルをリソース ディレクトリのMETA-INF/servicesに配置することによって、それ自身を識別します。ファイルの名前は、抽象サービスクラス の完全修飾名で構成する必要があります。ファイルには、改行で区切られたユニークな具体的な プロバイダクラス名のリストが含まれている必要があります。スペースやタブ文字、空白行は無視されます。コメント 文字は '#'(0x23)です。各行で最初のコメント文字に続く文字はすべて が無視されます。ファイルはUTF-8でエンコードされている必要があります。

+0

この疲れた答えをありがとう! – micfra

関連する問題