目前,我正在努力在现有应用程序中添加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作为构建工具。
答案 0 :(得分:2)
<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>