Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSGi-是否可以覆盖捆绑包';是否使用片段导入程序包版本?_Osgi_Equinox_Apache Karaf - Fatal编程技术网

OSGi-是否可以覆盖捆绑包';是否使用片段导入程序包版本?

OSGi-是否可以覆盖捆绑包';是否使用片段导入程序包版本?,osgi,equinox,apache-karaf,Osgi,Equinox,Apache Karaf,我有一个bundle(jersey服务器),它导入一个包(org.objectweb.asm),解析为可选,没有指定版本: org.objectweb.asm;resolution:=optional 目前,我们的应用程序部署到ApacheKaraf(使用Equinox框架),该框架导出此包的新版本(org.objectweb.asm),即4.0版。我试图解决的问题是,由于jersey服务器包没有为包指定版本,因此它正在连接到4.0。但是,我使用的jersey server版本(1.12)与此

我有一个bundle(jersey服务器),它导入一个包(
org.objectweb.asm
),解析为可选,没有指定版本:

org.objectweb.asm;resolution:=optional
目前,我们的应用程序部署到ApacheKaraf(使用Equinox框架),该框架导出此包的新版本(
org.objectweb.asm
),即4.0版。我试图解决的问题是,由于jersey服务器包没有为包指定版本,因此它正在连接到4.0。但是,我使用的jersey server版本(1.12)与此版本不兼容。我在容器中有一个3.1版本的包,我需要jersey服务器包连接到该包


我试图使用一个片段来满足我的需要,但它似乎不起作用。我不完全理解片段导入包冲突解决在Equinox(或Felix)中是如何工作的,我不知道我所尝试的是否是可能的。也许还有另一种方法?

不,片段只是相加的。也就是说,他们可以向其主机捆绑包添加额外的导入,但不能替换或删除主机的导入


jersey服务器捆绑包已损坏,必须修复。

我在pax web上遇到类似问题,我为其创建了一个“解决方案”:

也可通过maven获得:

我担心情况就是这样。在我的搜索中,我看到了关于片段解析实现细节的各种信息,希望我能解决这个问题。我想我只需要用我自己的清单创建一个新的
jersey服务器
捆绑包…@AchimNierbeck如果你幸运地使用它的依赖项的正确版本部署它,它才会工作。哪种方式违背了OSGi的目的。。。您最好只使用classpath;-)@NeilBartlett,这样做很好,看看这个片段的依赖关系:它将“开放”版本范围更改为严格版本范围,并且删除了可选标志。对于Pax Web,这是与较新版本的Karaf(已经包含ASM 4;)一起工作所必需的