我遇到了问题。
我有一个工作正常的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会有所帮助......它没有)
我现在已经这几天了,我似乎无法找到问题...... 任何帮助都会很棒......谢谢!
答案 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实例元数据服务加载凭据的凭据提供程序实现。