web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:org / Apache / http / conn / schema / SchemeSocketFactory

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

Java.lang.NoClassDefFoundError:org/Apache/http/conn/schema/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
  • 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 = "[email protected]"; // should be verified email

    LinkedList<String> recipients = new LinkedList<String>();
    recipients.add("[email protected]"); // 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を使用していますか?誰かが私に何が問題なのか教えてもらえますか?

わたし

6
Khoyendra Pande

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

18
Jeshurun

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

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

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

2
Zuop

javadoc から、org/Apache/http/conn/scheme/SchemeSocketFactoryクラスは4.1バージョン以降存在します。

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

2
ndeverge

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

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

1
Max Awesome