0

我想为一个简单的 JAX-WS 集成 CXF 和 Spring。下面是maven pom文件。

<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>2.7.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>2.7.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>2.7.6</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-webapp</artifactId>
    </dependency>
</dependencies>

当我使用 maven 命令运行码头时。它有一些这样的例外:

spring java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V

看来问题是 CXF 和 Spring 依赖问题。当我转到目标文件夹并发现有两个版本的 Spring 时,我指定的版本和 CXF 依赖的版本。3.0.7?

如果我将弹簧版本更改为较低的版本并且它可以工作。

我只是想知道如果我仍然想使用最新版本的 Spring,有什么办法可以解决这个问题吗?

4

1 回答 1

0

我想我找到了原因。我还需要将 spring-core 作为 maven 依赖项。因为异常中的转换器在核心依赖中。

所以当 maven jetty 运行时,sp​​ring 有两个版本,spring-core 使用的是 CXF 的 3.0.7,另一个是我指定的 3.2.3。

我需要与项目中的spring版本保持一致。

于 2013-08-14T14:08:02.817 回答