在Java中创建S3 Client时出错

时间:2017-07-10 13:31:13

标签: java eclipse amazon-web-services amazon-s3 aws-sdk

我遇到了问题。

我有一个工作正常的Java项目(由其他人编写),我将其克隆到我的计算机(来自GitHub)并在Eclipse中打开它。当我尝试运行它时,当脚本尝试创建s3客户端时,我一直收到错误。

这是代码(this.client = AmazonS3Client实例):

ClientConfiguration clientConfiguration = new ClientConfiguration();
ClientConfiguration.setMaxConnections(10);
clientConfiguration.setConnectionTimeout(120000);
clientConfiguration.setSocketTimeout(120000);
clientConfiguration.setMaxErrorRetry(5);

this.client = new AmazonS3Client(new InstanceProfileCredentialsProvider(), clientConfiguration);

这是错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
    at com.amazonaws.internal.config.InternalConfig.<clinit>(InternalConfig.java:43)
    at com.amazonaws.internal.config.InternalConfig$Factory.<clinit>(InternalConfig.java:304)
    at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:142)
    at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:137)
    at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:100)
    at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:64)

我也试过“this.client = AmazonS3ClientBuilder.defaultClient();”使用“Amazon3Client”实例,但它不能正常工作 - 同样的问题,尝试定义ClientConfiguration时出错......

我正在使用aws-java-sdk-1.11.160.jar(之前尝试使用1.11.111并且没有工作,所以我想也许升级jar会有所帮助......它没有)

我现在已经这几天了,我似乎无法找到问题...... 任何帮助都会很棒......谢谢!

2 个答案:

答案 0 :(得分:1)

你错过了类路径中的jackson-databind jar。

如果您使用maven,则可以添加以下依赖项来解决此错误:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version><your version></version>
</dependency>

答案 1 :(得分:0)

编写此代码是为了从EC2实例配置文件中获取AWS密钥和访问密钥。在本地克隆它时,您需要提供一种不同的方式来对AWS API进行身份验证。

http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html

构建客户端时,此代码使用IAM instance profile

选项

new InstanceProfileCredentialsProvider(),

  

从Amazon EC2实例元数据服务加载凭据的凭据提供程序实现。

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/InstanceProfileCredentialsProvider.html