Aws-sdk-java: Unable to initialize AmazonS3Client

Created on 4 Nov 2016  路  9Comments  路  Source: aws/aws-sdk-java

I'm using the example listed at - http://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectUsingJava.html. However, I get the exception below while running the GetObject class. I'm using 1.11.22 version of AWS S3 and AWS Core libraries.
Can you please advise -

2016-11-04 15:14:25 DEBUG AmazonWebServiceClient:79 - Internal logging succesfully configured to commons logger: true
2016-11-04 15:14:25 DEBUG AwsSdkMetrics:404 - Admin mbean registered under com.amazonaws.management:type=AwsSdkMetrics
2016-11-04 15:14:26 DEBUG InternalConfig:33 - Configuration override awssdk_config_override.json not found.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:176)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:158)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:73)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:58)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:51)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:39)
at com.amazonaws.http.AmazonHttpClient.(AmazonHttpClient.java:282)
at com.amazonaws.AmazonWebServiceClient.(AmazonWebServiceClient.java:164)
at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:520)
at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:500)
at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:482)
at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:466)
at com.objectedge.pulse.data.GetObject.main(GetObject.java:22)

Most helpful comment

Hi @amitkhanal, thank you for posting the output. It looks like from this line

/home/oedev/.m2/repository/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar

that version 4.3.2 of httpcore is being put on the classpath which is not compatible with version 4.5.2 of httpclient that is being loaded.

The method in the exception (setValidateAfterInactivity) is only present from version 4.4 and up of httpcore. Here is the javadoc for it: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/pool/AbstractConnPool.html#setValidateAfterInactivity%28int%29

You will need to check that you are pulling in a compatible version of httpcore (>= 4.4)

All 9 comments

Hi @amitkhanal, it looks like you may be using a version of Apache HTTP Client that isn't supported by the Java SDK. Can you please check that the version you are using is at least version 4.5?

Hi @dagnir I am using apache httpclient 4.5.2 - M2_REPO/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar

hmm... can you try running mvn dependency:build-classpath and paste the output? It could be that an older version is being put on to the classpath.

@dagnir here it is -

$ mvn dependency:build-classpath
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building data-access Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
[INFO]
[INFO] --- maven-dependency-plugin:2.8:build-classpath (default-cli) @ data-access ---
[INFO] Dependencies classpath:
/home/oedev/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jar:/home/oedev/.m2/repository/com/sun/mail/javax.mail/1.5.0/javax.mail-1.5.0.jar:/home/oedev/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar:/home/oedev/.m2/repository/joda-time/joda-time/2.7/joda-time-2.7.jar:/home/oedev/.m2/repository/org/jboss/ejb3/jboss-ejb3-ext-api/2.2.0.Final/jboss-ejb3-ext-api-2.2.0.Final.jar:/home/oedev/.m2/repository/com/objectedge/common/commonutils/0.0.1-SNAPSHOT/commonutils-0.0.1-SNAPSHOT.jar:/home/oedev/.m2/repository/org/glassfish/jersey/ext/jersey-spring3/2.21/jersey-spring3-2.21.jar:/home/oedev/.m2/repository/org/glassfish/jersey/core/jersey-server/2.21/jersey-server-2.21.jar:/home/oedev/.m2/repository/org/glassfish/jersey/core/jersey-client/2.21/jersey-client-2.21.jar:/home/oedev/.m2/repository/org/glassfish/jersey/media/jersey-media-jaxb/2.21/jersey-media-jaxb-2.21.jar:/home/oedev/.m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2-api/2.4.0-b31/hk2-api-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b31/aopalliance-repackaged-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/external/javax.inject/2.4.0-b31/javax.inject-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2-locator/2.4.0-b31/hk2-locator-2.4.0-b31.jar:/home/oedev/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar:/home/oedev/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/home/oedev/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.21/jersey-container-servlet-core-2.21.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2/2.4.0-b31/hk2-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2-utils/2.4.0-b31/hk2-utils-2.4.0-b31.jar:/home/oedev/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/home/oedev/.m2/repository/org/glassfish/hk2/config-types/2.4.0-b31/config-types-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2-core/2.4.0-b31/hk2-core-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2-config/2.4.0-b31/hk2-config-2.4.0-b31.jar:/home/oedev/.m2/repository/org/jvnet/tiger-types/1.4/tiger-types-1.4.jar:/home/oedev/.m2/repository/org/glassfish/hk2/external/bean-validator/2.4.0-b31/bean-validator-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/hk2-runlevel/2.4.0-b31/hk2-runlevel-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/class-model/2.4.0-b31/class-model-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/external/asm-all-repackaged/2.4.0-b31/asm-all-repackaged-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/hk2/spring-bridge/2.4.0-b31/spring-bridge-2.4.0-b31.jar:/home/oedev/.m2/repository/org/glassfish/jersey/media/jersey-media-json-jackson/2.21/jersey-media-json-jackson-2.21.jar:/home/oedev/.m2/repository/org/glassfish/jersey/core/jersey-common/2.21/jersey-common-2.21.jar:/home/oedev/.m2/repository/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.21/jersey-guava-2.21.jar:/home/oedev/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.1/osgi-resource-locator-1.0.1.jar:/home/oedev/.m2/repository/org/glassfish/jersey/ext/jersey-entity-filtering/2.21/jersey-entity-filtering-2.21.jar:/home/oedev/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet/2.21/jersey-container-servlet-2.21.jar:/home/oedev/.m2/repository/com/sun/jersey/jersey-client/1.9.1/jersey-client-1.9.1.jar:/home/oedev/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/home/oedev/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar:/home/oedev/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar:/home/oedev/.m2/repository/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:/home/oedev/.m2/repository/org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar:/home/oedev/.m2/repository/org/springframework/spring-web/4.2.3.RELEASE/spring-web-4.2.3.RELEASE.jar:/home/oedev/.m2/repository/org/springframework/spring-aop/4.2.3.RELEASE/spring-aop-4.2.3.RELEASE.jar:/home/oedev/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/home/oedev/.m2/repository/org/springframework/spring-beans/4.2.3.RELEASE/spring-beans-4.2.3.RELEASE.jar:/home/oedev/.m2/repository/org/springframework/spring-context/4.2.3.RELEASE/spring-context-4.2.3.RELEASE.jar:/home/oedev/.m2/repository/org/springframework/spring-expression/4.2.3.RELEASE/spring-expression-4.2.3.RELEASE.jar:/home/oedev/.m2/repository/org/springframework/spring-core/4.2.3.RELEASE/spring-core-4.2.3.RELEASE.jar:/home/oedev/.m2/repository/org/glassfish/jersey/ext/cdi/jersey-cdi1x/2.21/jersey-cdi1x-2.21.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.4/jackson-databind-2.5.4.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.5.4/jackson-core-2.5.4.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.5.4/jackson-jaxrs-json-provider-2.5.4.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.5.4/jackson-jaxrs-base-2.5.4.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.5.4/jackson-module-jaxb-annotations-2.5.4.jar:/home/oedev/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0/javax.ws.rs-api-2.0.jar:/home/oedev/.m2/repository/com/amazonaws/aws-java-sdk-s3/1.11.53-SNAPSHOT/aws-java-sdk-s3-1.11.53-SNAPSHOT.jar:/home/oedev/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.52/aws-java-sdk-kms-1.11.52.jar:/home/oedev/.m2/repository/com/amazonaws/jmespath-java/1.0/jmespath-java-1.0.jar:/home/oedev/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.53-SNAPSHOT/aws-java-sdk-core-1.11.53-SNAPSHOT.jar:/home/oedev/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/home/oedev/.m2/repository/software/amazon/ion/ion-java/1.0.1/ion-java-1.0.1.jar:/home/oedev/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.6/jackson-dataformat-cbor-2.6.6.jar:/home/oedev/.m2/repository/commons-io/commons-io/1.3.2/commons-io-1.3.2.jar:/home/oedev/.m2/repository/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar:/home/oedev/.m2/repository/commons-codec/commons-codec/1.9/commons-codec-1.9.jar:/home/oedev/.m2/repository/com/sun/jersey/contribs/jersey-multipart/1.19.3/jersey-multipart-1.19.3.jar:/home/oedev/.m2/repository/org/jvnet/mimepull/mimepull/1.9.3/mimepull-1.9.3.jar:/home/oedev/.m2/repository/com/sun/jersey/jersey-core/1.19.3/jersey-core-1.19.3.jar:/home/oedev/.m2/repository/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar:/home/oedev/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.315 s
[INFO] Finished at: 2016-11-08T10:49:11-08:00
[INFO] Final Memory: 16M/216M
[INFO] ------------------------------------------------------------------------

@dagnir I've also checked source of org.apache.http.impl.conn.CPool in httpclient versions 4.3.5, 4.5.2 but "setValidateAfterInactivity" method doesn't exist.
Am I missing something?

I'd appreciate you're response.

Hi @amitkhanal, thank you for posting the output. It looks like from this line

/home/oedev/.m2/repository/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar

that version 4.3.2 of httpcore is being put on the classpath which is not compatible with version 4.5.2 of httpclient that is being loaded.

The method in the exception (setValidateAfterInactivity) is only present from version 4.4 and up of httpcore. Here is the javadoc for it: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/pool/AbstractConnPool.html#setValidateAfterInactivity%28int%29

You will need to check that you are pulling in a compatible version of httpcore (>= 4.4)

Thanks @dagnir pulling httpcore version 4.4.5 fixed this issue.

I have the same problem
and this is how i fix it:

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpasyncclient</artifactId>
        <version>4.0.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4.5</version>
    </dependency>

T.Y

i have a similar error
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
at com.amazonaws.AmazonWebServiceClient.(AmazonWebServiceClient.java:52)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:147)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:128)
at Sample.d2csv.(d2csv.java:39)
at Sample.DynamodbToCSV4j.main(DynamodbToCSV4j.java:35)

can someone please suggest some solution

Was this page helpful?
0 / 5 - 0 ratings