6

我正在尝试通过 AWSCredentials 发送邮件但遇到异常

java.lang.NoClassDefFoundError: org/apache/http/conn/scheme/SchemeSocketFactory

我添加了这些罐子:

  • aws-java-sdk-1.3.11.jar
  • aws-java-sdk-1.3.11-javadoc.jar
  • aws-java-sdk-1.3.11-sources.jar
  • aws-java-sdk-flow-build-tools-1.3.11.jar
  • commons-logging.jar
  • httpclient-4.0-alpha4.jar
  • httpcore-4.0-alpha6.jar
  • log4j-1.2.13.jar
  • 邮件.jar

我的Java代码是-

 import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
import com.amazonaws.services.simpleemail.model.*;
import java.util.LinkedList;

public class SESExample {
public static final String ACCESS_KEY = "My Access";
public static final String SECRET_KEY = "My Secret";

public static void main(String args[]) {
    String sender = "support@brandzter.com"; // should be verified email

    LinkedList<String> recipients = new LinkedList<String>();
    recipients.add("khoyendra@globussoft.com"); // again a verified email, if you are in sandbox

    SendMail(sender, recipients, "Hi", "Hi how are u?");
}

public static void SendMail(String sender, LinkedList<String> recipients, String subject, String body) {
    Destination destination = new Destination(recipients);

    Content subjectContent = new Content(subject);
    Content bodyContent = new Content(body);
    Body msgBody = new Body(bodyContent);
    Message msg = new Message(subjectContent, msgBody);

    SendEmailRequest request = new SendEmailRequest(sender, destination, msg);

    AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
    AmazonSimpleEmailServiceClient sesClient = new AmazonSimpleEmailServiceClient(credentials);
    SendEmailResult result = sesClient.sendEmail(request);

    System.out.println(result);
}

}

我也试图搜索这个罐子但没有得到。我不确定是否使用了错误的罐子。谁能告诉我是什么问题?

我是

4

5 回答 5

19

javadocs中,SchemeSocketFactory该类仅从 4.1 版开始可用。所以这可能与您使用 4.0 alpha jar 的事实有关。尝试将您的 http-client 库升级到 4.1 或更高版本。

于 2012-06-22T07:06:32.320 回答
2

javadoc看来,org/apache/http/conn/scheme/SchemeSocketFactory该类自 4.1 版本以来就存在。

因此,尝试将 httpclient jar 升级到至少 4.1 版本。

于 2012-06-22T07:06:18.487 回答
2

如果您下载最新的 aws java SDK(我刚刚下载了 aws-java-sdk-1.9.3),

所需的库将位于第三方/**/lib 文件夹中。有一堆!

来自jomofrodo的这个答案需要更多的关注。搞定了。谢谢!

于 2015-05-26T12:18:29.593 回答
1

就我而言,我在 Netbeans 7.2 中创建了两个库:一个用于 Apache Commons Codec 1.6,另一个用于 Apache Commons HttpClient 4.2.2。在这种情况下,因为我为 HttpClient 制作的库也包含 Codec 1.6 jar,所以我遇到了同样的错误。

确保您的类路径中没有引用两个相同的库,或者同一个库的两个冲突版本。

于 2012-12-10T05:54:01.797 回答
-1

调试您的代码并指出异常发生的位置。我认为您使用的任何类实例都不包含在您的 jar 文件中。我不确定。通过调试找到。我认为 SchemeSocketFactory 在您的类路径中不存在。请检查

于 2012-06-22T07:04:44.777 回答