【发布时间】:2020-07-01 14:16:17
【问题描述】:
我正在尝试在我的 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>
在mvn 依赖树中我可以看到:
+- org.jboss.resteasy:resteasy-multipart-provider:jar:3.0.19.Final:provided
[INFO] | +- org.jboss.resteasy:resteasy-client:jar:3.0.19.Final:provided
[INFO] | +- org.jboss.resteasy:resteasy-jaxb-provider:jar:2.3.5.Final:provided
[INFO] | | \- com.sun.xml.bind:jaxb-impl:jar:2.2.5.jboss-1:provided
[INFO] | | +- com.sun.istack:istack-commons-runtime:jar:2.6.1:provided
[INFO] | | \- com.sun.xml.txw2:txw2:jar:20110809:provided
[INFO] | +- com.sun.mail:javax.mail:jar:1.5.5:provided
[INFO] | \- org.apache.james:apache-mime4j:jar:0.6: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
是什么导致了这个错误?
【问题讨论】:
-
你需要对 Jackson Annotation 库的依赖。
-
好的,可以给mvn链接吗?
-
我已经添加了,现在出现错误:java.lang.NoClassDefFoundError: org/apache/http/conn/SchemePortResolver
-
看起来 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 jackson-core-2.6。 7.jar jackson-dataformat-cbor-2.6.7.jar joda-time-2.8.1.jar jmespath-java-1.11.813.jar
标签: java amazon-web-services amazon-sqs noclassdeffounderror fasterxml