2012-08-11 55 views
7

如何找到导出包的包?找到导出包的OSGI包?

我使用felix,我有一个像“com.test”这样的字符串,我怎么知道哪个包导出了这个包?

我不想使用PackageAdmin,因为它已被弃用,而且我不想为每个包获取Export-Package标题并解析它。

任何想法?

回答

11

这听起来像你想以编程方式做到这一点,而不是在Gogo shell ...至少我会从你的问题的措辞假设。

没有真正的方法来说“哪个包”导出给定的包,因为可以有许多包导出任何给定的包,并且该包可以被许多包中的许多包使用。如果您有特定的软件包,并且想知道哪个软件包提供了软件包com.test,则可以获取导入软件包的接线Bundle.adapt(BundleWiring.class),然后使用BundleWiring.getRequiredWires()获取所有软件包相关性的提供程序。

从那里,你只需要找到osgi.wiring.package命名空间你想要的包线,则该线的供应商将是你有兴趣在该包的BundleRevisionBundleCapability

+0

这基本上是我正在寻找的。这是一个耻辱,我必须通过所有捆绑,并检查这个。我希望在框架上有一个方法,这里有一个包,哪个包满足它?鉴于这是框架在幕后进行的工作,无论如何它必须解决依赖关系。但无论如何,谢谢你的答案。 – Boomah 2012-08-13 10:18:54

2

您试过了: exports | grep com.test?

+0

对不起,我应该说我想做这个编程 – Boomah 2012-08-13 10:12:52