使用AWS Java SDK的JsonErrorUnmarshallerV2的NoClassDefFoundError

时间:2015-12-09 10:07:52

标签: java maven aws-sdk

我刚开始使用DynamoDb而且我是maven的初学者。我试图运行我无法修复的项目时遇到错误。

当我尝试在IntelliJ中运行项目时,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/transform/JsonErrorUnmarshallerV2
at com.amazonaws.services.kms.AWSKMSClient.init(AWSKMSClient.java:305)

在顶级pom中,我有以下依赖关系:

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

我尝试了很多东西,例如单独包括KMS的maven依赖,引用sdk和kms的最新版本,以及相同版本的sdk和kms。我试过把bom和sdk包括在内:

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-bom</artifactId>
            <version>1.10.40</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk</artifactId>
            <version>1.10.40</version>
        </dependency>

我总是得到同样的错误。 mvn clean和mvn安装工作没有错误,但运行应用程序失败。

我可以看到调试器中没有JsonErrorUnmarshallerV2的定义,但是aws-sdk-core应该提供这个并且应该包括在内。

如何修复或进一步调试此问题?

2 个答案:

答案 0 :(得分:2)

事实证明

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

不包括aws-core,我需要单独包含它,即

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

答案 1 :(得分:0)

Mark针对此JsonErrorUnmarshallerV2的NoClassDefFoundError(具有AWS Java SDK错误)提供了正确的答案。 缺少aws-java-sdk-core依赖项。获得最新的; -AWS网站, -Maven存储库