Java cxf Spring Maven依赖冲突
我们的项目使用以下cxf依赖项: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>
<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版本。