【发布时间】:2015-02-15 05:21:07
【问题描述】:
我有两个同名的 OSGi 包。但是有版本不同。假设一个包的版本是 1.0 ,另一个是 2.0 。因为 2.0 是更高版本,所以它的优先级将是第一位的。但我也想使用 bundle 1.0 中的一段代码。我怎样才能做到这一点??
【问题讨论】:
标签: osgi aem osgi-bundle
我有两个同名的 OSGi 包。但是有版本不同。假设一个包的版本是 1.0 ,另一个是 2.0 。因为 2.0 是更高版本,所以它的优先级将是第一位的。但我也想使用 bundle 1.0 中的一段代码。我怎样才能做到这一点??
【问题讨论】:
标签: osgi aem osgi-bundle
当 OSGi 选择从哪里导入包时,包版本并不重要。唯一的限制是您不能安装具有相同符号名称和版本的两个包。
您需要对捆绑包导出的包进行版本控制。如果需要,可以使用不同的版本导出每个包。然后,您可以在客户端捆绑包中导入具有允许版本范围的每个所需包。
所以 bundle 1.0 可以导出 1.0 版本的包 a 和 1.1 版本的包 b。 Bundle 2.0 可以导出 2.0 版本的包 a 和 1.2 版本的包 b。
然后你可以在客户端包中
不过,您只能在包级别执行此操作。所以你不能从不同的包访问同一个包中的类 - 至少不能不摆弄类加载器......你应该避免。
【讨论】: