OSGi - 是否可以使用片段覆盖bundle的导入包版本?

时间:2013-02-19 01:27:12

标签: osgi equinox apache-karaf

我有一个捆绑(jersey-server)导入包(org.objectweb.asm),其分辨率为可选,未指定版本:

org.objectweb.asm;resolution:=optional

目前,我们的应用程序已部署到Apache Karaf(使用Equinox框架),该框架将导出此软件包的新版本(org.objectweb.asm),即版本4.0。我试图解决的问题是,由于jersey-server软件包没有为软件包指定版本,因此它连接到4.0。但是,我使用的jersey-server版本(1.12)与此版本不兼容。我在容器中有3.1版本的软件包,我需要将jersey-server软件包连接到。

我试图使用一个片段来满足我的需求,但它似乎没有起作用。我不完全理解片段导入包冲突解决方案在Equinox(或Felix)中是如何工作的,以便知道我正在尝试做什么甚至是可能的。也许还有另一种方式?

2 个答案:

答案 0 :(得分:1)

不,碎片只是添加剂。即他们可以在主机包中添加额外的导入,但是他们无法替换或删除主机的导入。

jersey-server捆绑包只是破坏了,必须修复。

答案 1 :(得分:1)

我遇到了与pax-web类似的问题,我为它创建了一个“解决方法”:

https://github.com/ops4j/org.ops4j.pax.web/tree/master/pax-web-features/xbean-fragment

它也可以通过maven获得: http://search.maven.org/#artifactdetails%7Corg.ops4j.pax.web%7Cxbean-fragment%7C3.0.0.M2%7Cbundle