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

时间:2012-06-22 06:59:02

标签: java javamail

我想通过AWSCredentials发送邮件但是获得例外

  

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

我添加了这些jar:

  • 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-流构建工具-1.3.11.jar
  • 公地logging.jar
  • 的HttpClient-4.0-alpha4.jar
  • 的HttpCore-4.0-alpha6.jar
  • 的log4j-1.2.13.jar
  • 的mail.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);
}

}

我也试图搜索这个罐子但没有得到。 我使用错误的罐子不确定。 任何人都可以告诉我这是什么问题吗?

5 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:2)

the javadoc开始,似乎自{4.1}版本以来org/apache/http/conn/scheme/SchemeSocketFactory类存在。

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

答案 2 :(得分:2)

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

  

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:-1)

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