Java 日志类没有';不要让亚马逊SNS信息被发送
我正在使用亚马逊的SNS服务向手机发送信息。开发是用Java和Amazon的SDK进行的 起初它工作正常,但现在消息已停止发送,控制台上出现以下错误: 线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/commons/logging/LogFactory 原因:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory 发送消息的java代码与示例中的代码相同,可在中找到:Java 日志类没有';不要让亚马逊SNS信息被发送,java,amazon-web-services,amazon-sns,Java,Amazon Web Services,Amazon Sns,我正在使用亚马逊的SNS服务向手机发送信息。开发是用Java和Amazon的SDK进行的 起初它工作正常,但现在消息已停止发送,控制台上出现以下错误: 线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/commons/logging/LogFactory 原因:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory 发送消息的java代码与示例中的代码
publicstaticvoidmain(字符串[]args){
AmazonSClient snsClient=新的AmazonSClient();
String message=“我的短信”;
字符串phoneNumber=“+1xx555100”;
地图属性=
新的HashMap();
//
sendSMSMessage(snsClient、message、phoneNumber、smsAttributes);}
公共静态void sendSMSMessage(AmazonSClient snsClient、字符串消息、字符串电话号码、地图短信属性){
PublishResult=snsClient.publish(新的PublishRequest()
.withMessage(消息)
.withPhoneNumber(电话号码)
.withMessageAttributes(smsAttributes));
System.out.println(结果);//打印消息ID。
}
经过研究,我已经尝试使用找到的日志记录解决方案,该解决方案设置了log4js.properties文件,并在AWS开发者论坛中使用了相同的解决方案。他们都没有工作
我还尝试添加了org.apache.commons.logging.LogFactory
,因为错误是由它引起的(StackOveflow和其他问题建议它)。之后,又出现了另一个错误,说我需要添加com.fasterxml.jackson.core
。我添加了,它要求com.fasterxml.jackson.databind
。又加了一次,它要求再加一次。在第五个(不是开玩笑)罐子加起来的时候,我放弃了
AWS的文档很糟糕。使程序运行的依赖项通常位于完全分离的页面中,开发人员必须自己找到这些依赖项
我已经用密钥和密钥设置了一个用户
我可以禁用日志记录以避免发生此错误吗?如果没有,我必须添加哪些JAR作为依赖项才能使代码正常工作?那么您还有其他事情要做。对于简单的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>sns</artifactId>
<groupId>com.hotjoe.aws</groupId>
<name>SNS Sample</name>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sns</artifactId>
<version>1.11.202</version>
</dependency>
</dependencies>
</project>
正如您所见,commons日志记录与Jackson库一起提供。您的构建环境是什么样的?您是否没有使用ivy/maven/gradle来管理这些依赖关系?我已经多年不必担心手动添加依赖项了-你做了一些非常错误的事情。我正在使用mavenI从项目中删除jar,并像你一样在pom.xml中进行更改。在那之后,它工作得很好。毕竟,这是我糟糕的pom.xml的一个问题。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>sns</artifactId>
<groupId>com.hotjoe.aws</groupId>
<name>SNS Sample</name>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sns</artifactId>
<version>1.11.202</version>
</dependency>
</dependencies>
</project>
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ sns ---
[INFO] com.hotjoe.aws:sns:war:1.0-SNAPSHOT
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] \- com.amazonaws:aws-java-sdk-sns:jar:1.11.202:compile
[INFO] +- com.amazonaws:aws-java-sdk-sqs:jar:1.11.202:compile
[INFO] +- com.amazonaws:aws-java-sdk-core:jar:1.11.202:compile
[INFO] | +- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.4:compile
[INFO] | | \- commons-codec:commons-codec:jar:1.9:compile
[INFO] | +- software.amazon.ion:ion-java:jar:1.0.2:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.7.1:compile
[INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile
[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.6.7:compile
[INFO] | +- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.6.7:compile
[INFO] | \- joda-time:joda-time:jar:2.8.1:compile
[INFO] \- com.amazonaws:jmespath-java:jar:1.11.202:compile