AWS SQS:java.lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge?

AWS SQS:java.lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge?,java,amazon-web-services,amazon-sqs,noclassdeffounderror,fasterxml,Java,Amazon Web Services,Amazon Sqs,Noclassdeffounderror,Fasterxml,我试图在Java代码中向SQS发送一条消息,如下所示: public void pushToSQS(){ String queueURL = "https://sqs.us-east-1.amazonaws.com/205135634997/myQueue.fifo"; try { final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); sqs.

我试图在Java代码中向SQS发送一条消息,如下所示:

public void pushToSQS(){

    String queueURL = "https://sqs.us-east-1.amazonaws.com/205135634997/myQueue.fifo";
    
    try {

        final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient();

        sqs.sendMessage(new SendMessageRequest(queueURL,
                "test message"));

    } catch (final AmazonServiceException e) {
        log.error("Error: " + e.getMessage());
    }
}
但是在第行:
final AmazonSQS sqs=AmazonSQSClientBuilder.defaultClient()

我得到一个错误:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge
我已将以下内容添加到pom.xml中:

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

导致此错误的原因是什么?

看起来您有两次jackson。考虑这一点:

+- org.jboss.resteasy:resteasy-multipart-provider:jar:3.0.19.Final:provided
[INFO] \- org.jboss.resteasy:resteasy-jackson2-provider:jar:3.0.19.Final:provided
[INFO]    +- com.fasterxml.jackson.core:jackson-core:jar:2.6.3:provided
[INFO]    +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.3:provided
[INFO]    +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.3:provided
[INFO]    \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.6.3:provided
[INFO]       +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.3:provided
[INFO]       \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.3:provided
这是:

[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.6:compile

请将顶级依赖项放到
com.fasterxml.jackson.core:jackson-databind:jar:2.9.6
,然后查看它是否有效。

根据错误,代码正在尝试加载'com/fasterxml/jackson/annotation/JsonMerge',而这在“jackson-annotations:jar:2.6.3”中不可用。。根据上面共享的maven依赖关系,正在引用Jackson库的2.6.3版


但是版本2.9.6中提供了所需的类。因此建议使用2.9.6。建议在版本2.9.6中也使用jackson数据绑定和jackson core。

我看到有两个版本的jackson数据绑定和jackson注释。 在版本2.9.2+中,jackson注解中提供了JsonMerge版本


使用maven dependency tree使用mvn dependency:tree查找并排除旧版本的jackson annotations和jackson:databind

您需要对jackson Annotation库进行依赖。确定您可以提供mvn链接吗?我已经添加了该链接,现在收到错误:java.lang.NoClassDefFoundError:org/apache/http/conn/SchemePortResolverIt看起来像是aws java sdk sqs没有声明它所需要的依赖项,或者可能存在其他一些Amazon依赖项,您应该导入以获得这些依赖项。你可能想向亚马逊投诉。错误本身表明您需要声明对Apache HTTP客户端的依赖关系。我怀疑您的本地设置有问题。添加上面的依赖项,它添加了这些子依赖项:aws-java-sdk-sqs-1.11.813.jar aws-java-sdk-core-1.11.813.jar-commons-logging-1.1.3.jar-httpclient-4.5.9.jar-httpcore-4.4.11.jar-commons-codec-1.11.jar-ion-java-1.0.2.jar-jackson-databind-2.6.7.3.jar-jackson-annotations-2.6.0.jar-jark-jackson-core-2.6.7.jar-jark-jackson-format-cbor-2.6.7.jar-joda-1.8.1jmespath-java-1.11.813.jar顶级依赖关系是什么意思?在pom.xml中更改什么?在pom.xml中查找
jackson-databind:jar:2.9.6
。尝试移除它。如果不起作用,请将版本替换为2.6.3。
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.6:compile