【发布时间】:2014-04-09 22:26:11
【问题描述】:
我正在尝试评估我们的商店是否适合在不使用整个 NetBeans 平台的情况下使用 NetBeans Lookup API。
到目前为止,我设法用这段代码创建了一个项目:
for (SomeInterface si : Lookup.getDefault().lookupAll(SomeInterface.class)) {
si.doSomething();
}
我还创建了几个其他项目,每个项目都有一个实现 SomeInterface 的 AnImplementation 类,以及随附的文件 META-INF/services/path.to.SomeInterface 包含引用该类的行(例如“other.path.to .AnImplementation")。
当我将这些实现项目添加到 NetBeans IDE 中主项目的库(依赖项)时,它工作正常,并且我可以从两个实现中看到 doSomething() 的连续结果。
我的问题是如何在不引用主项目中的子项目的情况下使其工作;子项目的jar在构建时不会包含在主项目生成的jar中,可以随意添加或删除,改变上述代码的结果。
如果我没记错的话,这就是 Lookup API 文档中宣传的行为。 提前致谢。
编辑:目前,我的结论是,如果没有 NetBeans 平台(或 OSGi?),就不可能在启动时检测到哪些服务提供者存在。您需要在类路径中引用它们的 jar,从而在启动之前识别它们。随时证明我错了。
【问题讨论】:
标签: java netbeans lookup netbeans-platform