2

そこで META-INF/services をオーバーライドしたいのですが、jar なしで動作しますか?

4

2 に答える 2

3

はい、META-INF/servicesjar ファイルなしで使用できます。少なくとも、私のテスト (Java 6) によると、それが起こります。

すべての jar ファイルのMETA-INFディレクトリとクラスパス内のすべてのディレクトリは個別にスキャンできるため、技術的には、そのようなファイルは別の jar ファイルのファイルMETA-INFを上書きしませんが、(ローダーのメカニズムによっては) ファイルの 1 つのエントリ (リソースのクラスローダーの 1 つ) が他のファイルよりも優先される場合があるため、実際にはエントリをオーバーロードできます。すでにお気づきのように、そのようなケースの 1 つに(私は知りませんでした) があります。javax.xml.datatype.FactoryFinder

于 2011-03-27T08:16:51.037 に答える
0

すべてのクラスローダー (少なくとも、すべての合理的なクラスローダー) は順序を指定します。物事は端から端まで探されます。META-INF ディレクトリを jar または (比較) 前のディレクトリに追加すると、そこにあるファイルが最初になります。最後に追加すると、そこにあるファイルが最後になります。クラスローダが親優先で親がある場合は、もちろん最初のショットを取得します。

于 2011-03-27T13:38:24.143 に答える