2

我想覆盖那里的 META-INF/服务,它可以在没有 jar 的情况下工作吗?

4

2 回答 2

3

是的,您可以META-INF/services在没有 jar 文件的情况下使用。至少根据我的测试(Java 6)是这样。

所有 jar 文件的META-INF目录和类路径中的所有目录都可以独立扫描,因此从技术上讲,这样的文件META-INF不会覆盖另一个 jar 文件中的文件,而是(取决于加载器机制)其中一个文件中的条目(资源类加载器之一)可能优先于其他文件,因此实际上您可以重载条目。正如您已经发现的那样,其中一种情况是(我不知道)。javax.xml.datatype.FactoryFinder

于 2011-03-27T08:16:51.037 回答
0

所有类加载器(至少,所有有理类加载器)都指定一个顺序。从一端到另一端搜索事物。如果将 META-INF 目录添加到 jar 或(比较)前面的目录中,则其中的文件将首先出现。如果将其添加到末尾,则其中的文件将在最后。如果您的类加载器是父级优先并且有父级,那么它当然会获得第一枪。

于 2011-03-27T13:38:24.143 回答