我尝试在 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)
我尝试使用不同版本的依赖项,但似乎没有任何效果。这个问题有解决办法吗?
最佳答案
关于java - 没有这样的字段错误:Instance for AmazonS3Builder DefaultClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62893450/