java - 没有这样的字段错误:Instance for AmazonS3Builder DefaultClient

标签 java amazon-web-services

我尝试在 AWS EMR 上使用 AmazonS3ClientBuilder 的 defaultClient 以这种方式从 S3 存储桶获取一些文件:

S3Object fullObject = null;
        try {
            String bucket = "bucket";
            String key = "key";
            AmazonS3 s3client = AmazonS3ClientBuilder.defaultClient();
            fullObject = s3client.getObject(new GetObjectRequest(bucket, key));
            
        }

。我以这种方式设置了类路径

EXPORT CLASSPATH=/path/to/httpclient/httpclient-4.5.2.jar:/path/to/httcore/httpcore-4.4.11.jar:

我还在类路径中放入了以下依赖项:

  • aws-java-sdk:1.11.820
  • aws-java-sdk-s3:1.11.820
  • aws-java-sdk-core:1.11.820
  • 公共(public)日志记录:1.2

但是,每次我尝试运行该程序时都会收到错误:

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:89)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:66)
    at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:59)
    at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:50)
    at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:38)
    at com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:339)
    at com.amazonaws.http.AmazonHttpClient.<init>(AmazonHttpClient.java:323)
    at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:239)
    at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:225)
    at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:693)
    at com.amazonaws.services.s3.AmazonS3Builder$1.apply(AmazonS3Builder.java:35)
    at com.amazonaws.services.s3.AmazonS3Builder$1.apply(AmazonS3Builder.java:32)
    at com.amazonaws.services.s3.AmazonS3ClientBuilder.build(AmazonS3ClientBuilder.java:64)
    at com.amazonaws.services.s3.AmazonS3ClientBuilder.build(AmazonS3ClientBuilder.java:28)
    at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
    at com.amazonaws.services.s3.AmazonS3ClientBuilder.defaultClient(AmazonS3ClientBuilder.java:54)
    at ch.post.places.search.quags.official.run5.GetObject2.main(GetObject2.java:22)

我尝试使用不同版本的依赖项,但似乎没有任何效果。这个问题有解决办法吗?

最佳答案

首先,欢迎来到SO!

我很确定您的依赖项中有不同版本的 httpcore。尝试打印依赖关系树并添加一些排除项(如果有重复项)。

可以找到另一个类似的帖子 here .

关于java - 没有这样的字段错误:Instance for AmazonS3Builder DefaultClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62893450/

相关文章:

java - Jetty 似乎忽略了端口争论

java - Java 中的结构数据,如映射 <key,<value>>

python - AWS pandas 安装出现错误 : virtual memory exhausted: Cannot allocate memory

amazon-web-services - 如何在 AWS API Gateway 中将对象转换为 JSON?

amazon-web-services - 启动 RDS 实例时在 eventbridge 中创建事件

java - AWS s3图像放置对象

Java JTDS 到 SQL Server 2000

java - 在java中更改目录所有者

amazon-web-services - webpack 拆分是否有利于节省 AWS 成本?

java - 如何应对概率类型的编程挑战?