我有两个同名的OSGi包。但版本有所不同。假设一个包的版本为1.0,另一个包为2.0。因为2.0是更高版本所以它的priroty将是第一个。但是我也希望使用捆绑1.0中的一段代码。我怎么能实现这个?
答案 0 :(得分:0)
当OSGi选择从哪里导入包时,包版本不重要。唯一的限制是您无法安装具有相同符号名称和版本的两个软件包。
您需要的是对捆绑包导出的包进行版本控制。如果需要,可以使用不同的版本导出每个包。然后,在客户端捆绑包中,您可以导入具有允许版本范围的每个所需包。
因此,bundle 1.0可以在版本1.0中导出包a,在版本1.1中导出包b。 Bundle 2.0可以在版本2.0中导出包a,在版本1.2中导出包b。
在客户端套装中,您可以
您只能在包级别执行此操作。所以你不能从不同的包中访问同一个包中的类 - 至少不是没有摆弄类加载器......你应该避免这样做。