AWS Java SDK正在使用旧版的jackson jar

时间:2017-04-12 06:40:46

标签: java amazon-web-services sdk jackson build.gradle

目前,我正在努力在现有应用程序中添加AWS Java SDK,以执行与AWS云相关的操作。在导入aws java sdk以获取最新版本时,即1.1.1.113我遇到了运行时异常。在研究异常后,原因是java sdk使用了不赞成版本或者与jackson jar不兼容的版本。

sdk正在使用版本4.1的jackson jar,而所需的版本必须至少为5.即使我正在给最新的jackson jar但是它仍然参考SDK中存在的jar。下面的代码快照将有助于轻松识别

Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/databind/ObjectMapper;
    at com.amazonaws.partitions.PartitionsLoader.<clinit>(PartitionsLoader.java:54) [aws-java-sdk-core-1.11.113.jar:]
    at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30) [aws-java-sdk-core-1.11.113.jar:]
    at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:64) [aws-java-sdk-core-1.11.113.jar:]
    at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:52) [aws-java-sdk-core-1.11.113.jar:]
    at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:105) [aws-java-sdk-core-1.11.113.jar:]
    at com.amazonaws.regions.Region.getRegion(Region.java:43) [aws-java-sdk-core-1.11.113.jar:]

如何避免使用此特定jar的代码并使其使用最新的jar。我使用gradle作为构建工具。

1 个答案:

答案 0 :(得分:2)

你正在使用maven吗?我有一个类似的问题,以前使用joda-time,然后使用<exclusion>标签解决。 <exclusion>标记可用于排除aws-java-sdk中的旧jackson。以下是解决问题的方法:

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.113</version>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.8.8</version>
    </dependency>