Java cxf Spring Maven依赖冲突

Java cxf Spring Maven依赖冲突,java,maven,jar,dependencies,cxf,Java,Maven,Jar,Dependencies,Cxf,我们的项目使用以下cxf依赖项: <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-core</artifactId> </dependency> <dependency> <groupId>org.apache.cxf</groupId>

我们的项目使用以下cxf依赖项:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
        </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-bundle</artifactId>
    </dependency>

org.apache.cxf
cxf rt核
org.apache.cxf
cxf rt前端jaxrs
org.apache.cxf
cxf束
我们正在使用最新的
cxf 2.6.1
。但是,
cxf bundle
lib依赖于
spring3.0.7.RELEASE
libs,这与我们的
spring3.1.2.RELEASE
libs相冲突,后者是理解基于注释的ORM配置类所必需的


有人有解决这个问题的好方法吗?

要将Spring依赖项解析为所需版本,必须在pom中显式设置它们,如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>lorem</groupId>
  <artifactId>ipsum</artifactId>
  <version>0.0.1-SNAPSHOT</version>

      <dependencies>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-core</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-bundle</artifactId>
            <version>2.6.1</version>
        </dependency>

       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-asm</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>

    </dependencies>

</project>
为什么要依赖cxf捆绑包?您是否在OSGi环境中运行

cxf捆绑包导入这些包

 org.springframework*;resolution:=optional;version="[2.5,4)"

如果容器中部署了最新的Spring版本,应该可以(至少我会尝试一下)。

要将Spring依赖项解析为所需版本,必须在pom中显式设置它们,如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>lorem</groupId>
  <artifactId>ipsum</artifactId>
  <version>0.0.1-SNAPSHOT</version>

      <dependencies>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-core</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-bundle</artifactId>
            <version>2.6.1</version>
        </dependency>

       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-asm</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>

    </dependencies>

</project>
为什么要依赖cxf捆绑包?您是否在OSGi环境中运行

cxf捆绑包导入这些包

 org.springframework*;resolution:=optional;version="[2.5,4)"

如果容器中部署了最新的Spring版本,应该可以(至少我会尝试一下)。

在同一版本中使用同一个库的两个版本是不好的。挑一个。您想要最新的CXF还是您的ORM类?(你能更新你的ORM类来使用Spring3.1吗?)。挑一个。您想要最新的CXF还是您的ORM类?(你能更新你的ORM类来使用Spring3.1吗?)我确实和你一样明确地指定了Spring版本。然而,在Maven解析所有依赖项之后,我得到了一个混合的Spring lib版本。例如,我得到了
springbean:3.0.7.RELEASE
springcontext:3.1.2.RELEASE
。老实说,我不知道为什么会包含
cxf捆绑包。我对CXF不太熟悉。我们从另一个项目继承此组件。但是我们不能确定在OSGI环境中部署它。我在spring配置中看到的是:
。我拿出了
cxf bundle
,并尝试在Tomcat中部署该项目。我得到了
13:30:39.548[pool-2-thread-1]调试o.a.c.c.spring.ConfigurerImpl-无法确定类org.apache.cxf.bus.managers.CXFBusLifeCycleManager实例的bean名称。13:30:39.564[pool-2-thread-1]调试o.a.c.c.spring.ConfigurerImpl-无法确定类org.apache.cxf.bus.managers.ServerRegistryImpl实例的bean名称。
我收回了该名称。我忘了将所有Spring依赖项更新到3.1.2.0版本。现在它们被更新了。但是现在我得到了bean的
初始化失败;嵌套异常为java.lang.NoSuchFieldError:NULL
。似乎cxf不喜欢Spring3.1.2.RELEASE。实际上,我和您一样明确指定了Spring版本。然而,在Maven解析所有依赖项之后,我得到了一个混合的Spring lib版本。例如,我得到了
springbean:3.0.7.RELEASE
springcontext:3.1.2.RELEASE
。老实说,我不知道为什么会包含
cxf捆绑包。我对CXF不太熟悉。我们从另一个项目继承此组件。但是我们不能确定在OSGI环境中部署它。我在spring配置中看到的是:
。我拿出了
cxf bundle
,并尝试在Tomcat中部署该项目。我得到了
13:30:39.548[pool-2-thread-1]调试o.a.c.c.spring.ConfigurerImpl-无法确定类org.apache.cxf.bus.managers.CXFBusLifeCycleManager实例的bean名称。13:30:39.564[pool-2-thread-1]调试o.a.c.c.spring.ConfigurerImpl-无法确定类org.apache.cxf.bus.managers.ServerRegistryImpl实例的bean名称。
我收回了该名称。我忘了将所有Spring依赖项更新到3.1.2.0版本。现在它们被更新了。但是现在我得到了bean的
初始化失败;嵌套异常为java.lang.NoSuchFieldError:NULL
。似乎cxf不喜欢Spring3.1.2.0版本。