java - 两个Maven Dependency 最新版本和旧版本冲突

标签 java maven amazon-web-services spring-data spring-data-rest

我正在使用来自 here 的 spring-data-dynamoDB 项目, 根据其 pom.xml他们使用了 1.6.9.1 版本的 aws-java-sdk,但我需要为我的项目使用最新版本的 aws-java-sdk 才能使用它的一些功能也实现 Amazon s3。如果我包括它的依赖项,

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.7.9</version>
</dependency>

我得到如下异常,

12:51:25.298 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Retrieved dependent beans for bean '(inner bean)': [_relProvider]
12:51:25.307 [main] ERROR o.s.w.c.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.hateoas.config.HypermediaSupportBeanDefinitionRegistrar$Jackson2ModuleRegisteringBeanPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_halObjectMapper': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.fasterxml.jackson.databind.ObjectMapper]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) ~[spring-beans-4.0.2.RELEASE.jar:4.0.2.RELEASE]
.......
.......

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_halObjectMapper': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.fasterxml.jackson.databind.ObjectMapper]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076) ~[spring-beans-4.0.2.RELEASE.jar:4.0.2.RELEASE]
.......
.......

我试过如下排除,结果也一样,

<dependency>
   <groupId>org.socialsignin</groupId>
   <artifactId>spring-data-dynamodb</artifactId>
   <version>1.0.0-SNAPSHOT</version>
   <exclusions>
      <exclusion>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
      </exclusion>
   </exclusions>
</dependency>

现在可以在我的项目中使用最新版本的 aws-java-sdk 吗?否则必须更新 spring-data-dynamoDB pom.xml 如果只有我能够使用它或什么? 感谢 Michaellavelle 的这个巨大项目。它对我完成 DynamoDB 部分有很大帮助。

最佳答案

谢谢@user944849。问题是 aws-java-sdk 中使用的 jackson 库是 spring-data-rest-webmvc 中的较低版本并与其冲突,因此通过从 aws-java-sdk 构建中排除 jackson 库是正确的。我得到的解决方案是,

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.7.9</version>
    <exclusions>
        <exclusion>
            <artifactId>jackson-core</artifactId>
            <groupId>com.fasterxml.jackson.core</groupId>
        </exclusion>
        <exclusion>
            <artifactId>jackson-databind</artifactId>
            <groupId>com.fasterxml.jackson.core</groupId>
        </exclusion>
        <exclusion>
            <artifactId>jackson-annotations</artifactId>
            <groupId>com.fasterxml.jackson.core</groupId>
        </exclusion>
    </exclusions>
</dependency>

由于声誉原因,我无法提前发布答案。这可能对像我一样卡住的其他人有用。谢谢。

关于java - 两个Maven Dependency 最新版本和旧版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823106/

相关文章:

javascript - 获取 pinterest 访问 token 的代码

maven - Hadoop2 的 Hadoop MRUnit 异常

java - mvn Spring 启动 :run results in Access denied for user 'root' @'localhost' (using password: YES)

java - 无法使用 maven 插件在 intellij 中导入 okhttp 项目

amazon-web-services - 如何使用yum安装第三方库(例如opencv)?

amazon-web-services - 调用没有 Host/x-apigw-api-id header 的私有(private) API 网关

java - 如何检查两个矩阵是否有相同的行?

java - 使 Project Euler 的解决方案更高效

javascript - 从 dynamodb 检索文档的异步代码永远不会执行

java - 使用多线程读取多个txt文件搜索字符串