3

Java 的 ServiceLoader 需要这些条目出现在 JAR 文件中。有没有办法在运行时以编程方式在 IDE 中添加这些服务条目以进行单元测试?特别是当 JAR 尚未构建时。

4

1 回答 1

7

不要太专注于 JAR 文件。它们是封装服务的首选方式,但不是必需的。关键是真的ClassLoader.getResources(String)- Stringarg 有效地变成("META-INF/services/" + serviceClass.getName()). 要记住的另一点信息是ServiceLoader.load(Class)使用上下文类加载器(当然,您也可以使用ServiceLoader.load(Class, ClassLoader))。所以......你真正需要做的是操纵类路径或配置上下文类加载器以使ServiceLoader快乐。

于 2010-06-30T19:17:51.213 回答