2.8及其cxf功能3.3.5以及作为功能安装的cxf-jaxrs都依赖于Google Guava 20.0。我有自己的项目,在其中我通过Karaf功能安装了两个jar,其中包括一个Google Guava 18.0。我现在要安装的捆绑软件具有适用于18.0的Google Guava依赖项,但是出现以下错误:
Chain 1:
arcanite-core [arcanite-core [269](R 269.0)]
import: (&(osgi.wiring.package=com.google.common.collect)(version>=18.0.0)(!(version>=19.0.0)))
|
export: osgi.wiring.package: com.google.common.collect
com.google.guava [com.google.guava [253](R 253.0)]
Chain 2:
arcanite-core [arcanite-core [269](R 269.0)]
import: (&(osgi.wiring.package=com.querydsl.core)(version>=4.2.0)(!(version>=5.0.0)))
|
export: osgi.wiring.package=com.querydsl.core; uses:=com.google.common.collect
com.querydsl.core [com.querydsl.core [255](R 255.0)]
import: (&(osgi.wiring.package=com.google.common.collect)(version>=18.0.0))
|
export: osgi.wiring.package: com.google.common.collect
com.google.guava [com.google.guava [172](R 172.0)] Unresolved requirements: [[arcanite-core [269](R 269.0)] osgi.wiring.package; (&(osgi.wiring.package=com.querydsl.core)(version>=4.2.0)(!(version>=5.0.0)))]
在导入项目时,我已明确导入18.0版本:
<Import-Package>
...
com.google.common.collect;version="[18.0,19.0)",
*
<Import-Package>
我该如何摆脱这种冲突,这真的只是卡拉夫(OSGI)中只有一个版本的番石榴,我在做什么错了?
答案 0 :(得分:0)
好吧,这很棘手,因为说cxf功能构成了Guava 20.0的依赖项。 然后在里面安装我自己的带有query-dsl和guvava 18.0 jar的功能。 但是,根据maven并没有解决对guava的querydsl依赖关系,而是根据karaf中现有的20.0番石榴来解决。
当我现在安装带有query-dsl和guava 18.0的捆绑软件时,就会出现冲突。
最后,我从该功能中删除了18.0库,并允许在我的项目中使用更大的版本范围: ... com.google.common.collect; version =“ [18.0,23.0)”, *
冲突消失了,让我想知道如何在Feature.xml中的querydsl和guava 18.0之间,如果可能的话,指定这种依赖关系。