NoSuchFieldError: экземпляр для AmazonS3Builder DefaultClient - PullRequest
2 голосов
/ 14 июля 2020

Я пытаюсь использовать defaultClient AmazonS3ClientBuilder на AWS EMR, чтобы получить некоторые файлы из S3 Bucket следующим образом:

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
  • commons-logging : 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)

Я пытался использовать разные версии зависимостей, но ничего не работает . Есть ли решение этой проблемы?

1 Ответ

1 голос
/ 14 июля 2020

Во-первых, добро пожаловать в SO!

Я почти уверен, что у вас есть разные версии httpcore в ваших зависимостях. Попробуйте распечатать дерево зависимостей и добавить исключения, если есть дубликаты.

Другой похожий пост можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...