其他OSGi包的访问类

bak*_*lap 3 osgi bundle

我的项目有两个捆绑,让我们说Bundle ABundle B.

现在Bundle A需要从中访问一个类Bundle B.

我怎样才能做到这一点?

tho*_*ens 6

有两种方法:

  1. 将bundle B的依赖关系添加到bundle A的Manifest: Require-Bundle: bundle-id-of-bundle-A
  2. 在包A的清单中导入所需类的包: Import-Package: package.of.your.class

在这两种情况下,您都需要在包B中导出包含您的类的包: Export-Package: package.of.your.class

此外,这是一个很好的介绍:http: //ctpjava.blogspot.com/2010/09/introduction-to-osgi.html

  • 正如@thobens所说,有两种方式; 但是Require-Bundle是不好的做法,你应该只使用Import-Package - 在OSGi中,软件包是模块化的单元,这是你应该依赖的,请参阅http://stackoverflow.com/questions/1865819/when-should -i-use-import-package-and-when-should-i-use-require-bundle,http://njbartlett.name/2011/02/09/uses-constraints.html和http://www.osgi .org/blog/2011/05/unbearable-lightness-of-jigsaw.html更深入地讨论为什么Require-Bundle是坏的. (3认同)