Java 日志类没有';不要让亚马逊SNS信息被发送

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代码与示例中的代码

我正在使用亚马逊的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