什么是私人包裹的交易?

时间:2012-12-14 12:01:31

标签: java module osgi

我一直在与OSGi合作一段时间,但我仍然不了解私有包。

  • 导出的包是对其他包可见的包
  • 导入的包是由导出包的包导入的包。
  • 私有包是其他包不可见的包(我不明白)

并非所有未导出的捆绑包对所有其他包都不可见吗?如果是这样,那么未导出的私有包和包有什么区别?

我已经阅读了OSGi in Action和“OSGi和Apache Felix 3.0 - 初学者指南”,但我无法找到差异。

2 个答案:

答案 0 :(得分:25)

没有区别。

Export-Package中未列出的任何软件包都是私有的....这就是它的全部内容。

可能已看到另一个名为Private-Package的标头。这不是OSGi标头,OSGi框架完全忽略了它。如果您看到这一点,则表示已使用bndMaven Bundle Plugin构建了一个包,它使用此标头具有构建时指令。因此,它仅在构建时相关,并且在运行时无任何影响。

答案 1 :(得分:16)

是的,manifest.mf条目Export-Package中未定义的所有包都是私有包。你不需要单独指定它们,它只是易于沟通的另一个术语。

如果您的清单是由maven-bundle-plugin生成的,那么这个术语会更加相关,因为maven bundle插件将默认导出所有包,除了一个名为{{1}的包。 (或其子包)。这是某种反向方法,因为您指定了私有包并计算了导出的包。有关详细信息,请参阅the maven bundle plugin