尝试使用java将文件上传到Amazon S3时,Jackson的NoSuchMethodError.

sra*_*rao 5 ant exception amazon-s3 jackson aws-java-sdk

我的项目是尝试使用aws-java-sdk-1.11.15将文件上传到Amazon S3.我正在使用ant在CLI上构建我的项目.我使用的杰克逊版本是2.8.0.我正在将我的lib文件夹添加到我的类路径中.我的所有jar文件都在我的lib文件夹中.我在运行代码时得到以下信息 -

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterx
ml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/databind/ObjectMapper;
at com.amazonaws.partitions.PartitionsLoader.(PartitionsLoader.java:54)
at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:66)
at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:54)
at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:107)
at com.amazonaws.services.s3.AmazonS3Client.createSigner(AmazonS3Client.java:3256)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3952)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1538)
at code4goal.antony.resumeparser.ResumeParserProgram.main(ResumeParserProgram.java:613)
Run Code Online (Sandbox Code Playgroud)

对于这段代码 -

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
try
{
    File file = new File(uploadFileName);
    s3client.putObject(new PutObjectRequest(bucketName, keyName, file));
}
Run Code Online (Sandbox Code Playgroud)

错误发生在s3client.putObject(new PutObjectRequest(bucketName,keyName,file));

Yur*_*huk 6

正如Christophe L所说,那就是杰克逊图书馆版本的冲突.

以下是如何在项目中轻松安全地使用Amazon SDK和最新Jackson的方法:

如果您使用依赖于Jackson与Amazon SDK使用的版本冲突的其他库,请考虑使用aws-java-sdk-bundle它通过重命名的包名称与所有必需的库一起分发.这使您可以安全地使用亚马逊图书馆的v1.11.15和最新的杰克逊.
更多信息:https://aws.amazon.com/blogs/developer/java-sdk-bundle/

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bundle</artifactId>
        <version>1.11.15</version>
        <!-- <version>1.11.172</version> -->
    </dependency>
Run Code Online (Sandbox Code Playgroud)

PS实际适用于Amazon SDK 1.11.172


Chr*_*e L 2

似乎是库版本冲突。AWS Java SDK 1.11.15 依赖于 Jackson 版本 2.6.6(请参阅http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-core/1.11.15)。Jackson 在 2.8.0 中可能有一些重大更改,因此您可能需要尝试将其降级到 2.6.6,然后重试。