Search code examples
amazon-web-servicesaws-secrets-manager

java.lang.NoSuchMethodError: com.amazonaws.protocol.json.JsonErrorShapeMetadata.withExceptionUnmarshaller


Trying to call AWS secrets manager api to get the secret. But getting this error while deploying the jar. I have made sure dependencies are included in the jar.

POM:

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.647</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-core</artifactId>
        <version>1.11.647</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-secretsmanager</artifactId>
        <version>1.11.647</version>
    </dependency>

Code snippet

      val client: AWSSecretsManager = AWSSecretsManagerClientBuilder
                            .standard()
                            .withRegion(region)
                            .build()

Error:

    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.<clinit>(AWSSecretsManagerClient.java:148)
    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder.build(AWSSecretsManagerClientBuilder.java:61)
    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder.build(AWSSecretsManagerClientBuilder.java:27)
    at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)```
...

Solution

  • withExceptionUnmarshaller() has been introduced in com.amazonaws.protocol.json.JsonErrorShapeMetadata since version 1.11.622:

    https://github.com/aws/aws-sdk-java/commit/c6bb2c8709aaff68ed732d9232630f4c40b07fcd#diff-536c803a93cb58597c2e0bfe71e2815d

    and your pom.xml seems to be correct.

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-core</artifactId>
            <version>1.11.647</version>
        </dependency>
    

    So your program may refer to anther old version of aws-java-sdk-core.jar when running.