6

AWSCredentialsでメールを送信しようとしていますが、例外が発生します

java.lang.NoClassDefFoundError:org / apache / http / conn / schema / SchemaSocketFactory

私はこれらの瓶を追加しました:

  • 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
  • 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);
}

}

私もこの瓶を検索しようとしていますが、取得できません。間違ったjarを使用していますか?誰かが私に何が問題なのか教えてもらえますか?

私は

4

5 に答える 5

19

javadocsから、このSchemeSocketFactoryクラスはバージョン4.1以降でのみ使用可能です。したがって、これは、4.0アルファjarを使用しているという事実と関係がある可能性があります。http-clientライブラリを4.1以降にアップグレードしてみてください。

于 2012-06-22T07:06:32.320 に答える
2

javadocから、このorg/apache/http/conn/scheme/SchemeSocketFactoryクラスは4.1バージョン以降に存在しているようです。

したがって、httpclientjarを少なくとも4.1バージョンにアップグレードしてみてください。

于 2012-06-22T07:06:18.487 に答える
2

最新のawsjavaSDKをダウンロードした場合(aws-java-sdk-1.9.3をダウンロードしたばかりです)、

必要なライブラリは、サードパーティ/ **/libフォルダにあります。それらの束があります!

jomofrodoからのこの回答には、さらに注意が必要です。ばっちり成功。ありがとう!

于 2015-05-26T12:18:29.593 に答える
1

私の場合、Netbeans7.2で作成した2つのライブラリがありました。1つはApacheCommonsCodec 1.6用で、もう1つはApache CommonsHttpClient4.2.2用です。この場合、HttpClient用に作成したライブラリにもCodec 1.6 jarが含まれているため、これと同じエラーが発生していました。

クラスパスで参照されている同じライブラリが2つ、または同じライブラリの競合するバージョンが2つないことを確認してください。

于 2012-12-10T05:54:01.797 に答える
-1

コードをデバッグし、例外が発生する場所を指摘します。使用したクラスのインスタンスは、jarファイルに含まれていないと思います。よくわかりません。デバッグしてそれを見つけてください。SchemeSocketFactoryはクラスパスに存在しないと思います。チェックしてください

于 2012-06-22T07:04:44.777 に答える