2012-06-22 14 views
6

Tring para enviar correo por AWSCredentials pero conseguir una excepciónjava.lang.NoClassDefFoundError: org/apache/http/conn/esquema/SchemeSocketFactory

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

he añadido estos 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-flujo-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

Mi código java es -

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

}

También estoy tratando de buscar este contenedor pero no obtengo. ¿Estoy usando un jar incorrecto? No estoy seguro. ¿alguien me puede decir cuál es el problema?

estoy

+0

¿Puede mostrarnos el archivo del classpath? – Zakaria

Respuesta

18

Desde javadocs, la clase SchemeSocketFactory solo está disponible desde la versión 4.1. Por lo tanto, esto podría tener algo que ver con el hecho de que está utilizando las jarras alfa 4.0. Intente actualizar su biblioteca http-client a 4.1 o superior.

+0

Ahora estoy usando httpclient-4.2.jar y obtengo un nuevo error. java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: method () V no encontrado –

+0

Necesita el [commons-codec] (http://commons.apache.org/codec/download_codec.cgi) jar en tu classpath. – Jeshurun

+0

Sí, he añadido estos, pero sigo obteniendo --- java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: method () V no encontrado –

0

depurar el código y señalar dónde se producen excepciones. Cualquiera de las instancias de clase que utilizó no está incluido en su archivo jar, creo que sí. no estoy seguro. encontrar eso depurando Creo que SchemeSocketFactory no existe en tu ruta de clase. compruebe

+0

error en esta línea - AmazonSimpleEmailServiceClient sesClient = new AmazonSimpleEmailServiceClient (credenciales); –

+0

Cualquiera de las clases que utilizó en AmazonSimpleEmailServiceClient no está en su ruta de clase. verifique ....... – Amith

2

Desde the javadoc, parece que existe la clase org/apache/http/conn/scheme/SchemeSocketFactory desde la versión 4.1.

Por lo tanto, intente actualizar el jar httpclient a al menos la versión 4.1.

1

En mi caso, tenía dos bibliotecas que creé en Netbeans 7.2: una para Apache Commons Codec 1.6 y otra para Apache Commons HttpClient 4.2.2. En este caso, debido a que la biblioteca que hice para HttpClient también contenía el contenedor de Codec 1.6, estaba obteniendo el mismo error.

Asegúrese de que no tiene dos de las mismas bibliotecas a las que se hace referencia en su ruta de clases, o dos versiones conflictivas de la misma biblioteca.

2

(AWS-java-sdk-1.9.3 que acaba de descargar) Si descarga el último SDK AWS java,

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

Esta respuesta de jomofrodo necesita más atendían. Dado en el clavo. Gracias!

Cuestiones relacionadas