2012-06-22 8 views
6

Tring per inviare la posta da AWSCredentials ma ottenere un'eccezionejava.lang.NoClassDefFoundError: org/apache/http/conn/schema/SchemeSocketFactory

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

ho aggiunto questi vaso:

  • 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

Il mio codice 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); 
} 

}

0.123.

Sto anche cercando di cercare questo barattolo, ma non ottengo. Sto usando un vaso sbagliato, non sono sicuro. qualcuno può dirmi qual è il problema?

Io sono

+0

Puoi mostrarci il file del classpath?Errore – Zakaria

risposta

18

Da javadocs, la classe SchemeSocketFactory è disponibile solo dalla versione 4.1. Quindi questo potrebbe avere qualcosa a che fare con il fatto che stai usando i 4.0 alfa jar. Prova ad aggiornare la tua libreria del client http alla versione 4.1 o successiva.

+0

Ora sto usando httpclient-4.2.jar e sto ottenendo un nuovo errore. java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: metodo () V non trovato –

+0

È necessario il [codec comune] (http://commons.apache.org/codec/download_codec.cgi) jar nel classpath. – Jeshurun

+0

Sì, li ho aggiunti ma ottenendo ancora --- java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: metodo () V non trovato –

0

eseguire il debug del codice e indicare dove si verificano delle eccezioni. Qualunque istanza di classe che hai usato non è inclusa nel tuo file jar, penso di si. non sono sicuro. trovalo facendo il debug. Penso che SchemeSocketFactory non esista nel tuo percorso di classe. si prega di verificare

+0

in arrivo su questa linea - AmazonSimpleEmailServiceClient sesClient = new AmazonSimpleEmailServiceClient (credentials); –

+0

Qualsiasi classe utilizzata in AmazonSimpleEmailServiceClient non si trova nel percorso della classe. per favore controlla ....... – Amith

2

Da the javadoc, sembra che la classe org/apache/http/conn/scheme/SchemeSocketFactory esista dalla versione 4.1.

Quindi, provare ad aggiornare jar httpclient almeno alla versione 4.1.

1

Nel mio caso, avevo due librerie che ho creato in Netbeans 7.2: una per Apache Commons Codec 1.6 e una per Apache Commons HttpClient 4.2.2. In questo caso, poiché la libreria che ho creato per HttpClient conteneva anche il jar Codec 1.6, stavo ottenendo lo stesso errore.

Assicurarsi di non avere due delle stesse librerie a cui si fa riferimento nel percorso classe o due versioni in conflitto della stessa libreria.

2

(AWS-java-sdk-1.9.3 Ho appena scaricato) Se si scarica l'ultimo SDK AWS Java,

the required libraries will be in the third-party/**/lib folders. There are a bunch of them!

Questa risposta da jomofrodo ha bisogno di più attenzione alle targhe. Azzeccato. Grazie!

Problemi correlati