如何从较低版本的包中访问一个类?

时间:2015-02-15 05:21:07

标签: osgi cq5 osgi-bundle

我有两个同名的OSGi包。但版本有所不同。假设一个包的版本为1.0,另一个包为2.0。因为2.0是更高版本所以它的priroty将是第一个。但是我也希望使用捆绑1.0中的一段代码。我怎么能实现这个?

1 个答案:

答案 0 :(得分:0)

当OSGi选择从哪里导入包时,包版本不重要。唯一的限制是您无法安装具有相同符号名称和版本的两个软件包。

您需要的是对捆绑包导出的包进行版本控制。如果需要,可以使用不同的版本导出每个包。然后,在客户端捆绑包中,您可以导入具有允许版本范围的每个所需包。

因此,bundle 1.0可以在版本1.0中导出包a,在版本1.1中导出包b。 Bundle 2.0可以在版本2.0中导出包a,在版本1.2中导出包b。

在客户端套装中,您可以

  • 导入包版本范围为[1.0,2.0)的包a - >将决定从bundle 2.0打包a
  • 导入包b,版本范围为[1.1,1.2) - >将解决从捆绑包1.0
  • 打包b

您只能在包级别执行此操作。所以你不能从不同的包中访问同一个包中的类 - 至少不是没有摆弄类加载器......你应该避免这样做。