1

我正在学习 OSGi 框架。我发现 Bundles 由 .class 文件和清单文件组成。现在假设我有两个捆绑包 A 和 B,捆绑包 B 依赖于捆绑包 A 的服务。因此,在编译捆绑包 B 时,我必须将捆绑包 A 的服务类保留在捆绑包 B 的类路径中,或者必须将其(捆绑包 A 的服务)保留在捆绑包 B 中,以便编译器可以编译。现在,如果我们这样做,那么如何实现模块化以及两个捆绑包是如何独立的。请帮忙。谢谢

4

2 回答 2

6

使用接口!!

你有在 interface I。类在编译时和运行时都A实现I并因此依赖于它。类B使用 的实例I,它作为 OSGi 服务获得。因此B取决于I编译时和运行时。

因此,既不A也不B直接了解彼此。实现代码是隐藏的,只有界面是可见和共享的。这就是实现模块化的方式。

于 2012-07-10T14:36:37.483 回答
0

手动进行依赖管理很容易出错。我建议你使用 maven 来管理依赖项。此外,maven-bundle-pluginIn 可以帮助您在编译时检查导入/导出包;而maven-eclipse-plugin帮助你根据pom中的依赖配置生成eclipse项目。

于 2012-07-10T13:53:03.287 回答