2012-06-13 16 views
10

Estoy tratando de ejecutar la muestra de DynamoDB que viene con AWS SDK para java. Lo hago usando eclipse y agregué el archivo aws-java-sdk-1.3.2.jar a la ruta de compilación del proyecto. La compilación, por supuesto, va bien, pero estoy obteniendo una excepción de tiempo de ejecución llamada NoClassDefFoundError. Sé que significa que la clase estuvo allí en compilación pero no se pudo encontrar en tiempo de ejecución. Traté de agregar el archivo jar a las variables env - no ayudó. También verifiqué y no hay problema con el uso de otros archivos jar externos en otros proyectos. Mismo problema en Windows y Linux.NoClassDefFoundError al ejecutar un programa usando AWS SDK para java

ayuda a alguien?

Gracias, ben.

Seguimiento de la pila:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.<clinit>(AmazonDynamoDBClient.java:62) 
    at AmazonDynamoDBSample.init(AmazonDynamoDBSample.java:62) 
    at AmazonDynamoDBSample.main(AmazonDynamoDBSample.java:67) 
+0

Publique su rastro de pila por favor? –

+1

¿tiene el archivo jar de la biblioteca de Apache commons agregado? se puede encontrar aquí: http://commons.apache.org/logging/download_logging.cgi –

+1

Sí, también códec y cliente HTTP. Todo agregado a la ruta de compilación –

Respuesta

1

Parece que tu JAR AWS necesita unos JAR adicional para aplicar utilizados, pero los artículos no AWS (como en el caso de la tala).

Si descargó un directorio distribuible que contiene un directorio "lib", lo más probable es que solo haya configurado Eclipse para usar el JAR de AWS en lugar de todos los JAR necesarios, incluido AWS y probablemente todos los JAR del directorio "lib".

+0

lib tenía aws-java-sdk-1.3.2-sources.jar y aws-java-sdk-1.3.2-javadoc.jar en él. No son relevantes, ¿verdad? También obtuve un directorio llamado third party, este contenía un commons-logging-1.1.1.jar y también está en la ruta de compilación ... –

+0

Tienes razón al adivinar que las fuentes y los jars de javadoc no son lo que necesitas para agregar El archivo commons-logging-1.1.1.jar de terceros contiene la clase faltante que busca. Como un aparte, puede configurar la biblioteca AWS para "incluir fuente" y luego conectar el archivo JAR "fuentes" si desea depurar en la biblioteca aws. –

+0

commons-logging-1.1.1.jar ya está dentro de la ruta de compilación. También encontré org/apache/commons/logging/LogFactory.class manualmente dentro del contenedor. ¿Puedes pensar en alguna razón por la cual la JVM no la encontraría? –

12

Dentro de la AWS-java-sdk-1.3.2 carpeta encontrará otra carpeta denominada "terceros". Todos los archivos de terceros utilizados por Amazon SDK se encuentran dentro de esa carpeta, incluido Apache Common Logging. Debe agregar los archivos necesarios a su classpath junto con los archivos jar de AWS SDK.

+0

¿Podría proporcionar un enlace web a ese "tercero" mágico? En la dependencia jar no hay tal carpeta. – Cherry

+1

Omg ... He estado rodeando este problema exacto por mucho tiempo ... Bibliotecas de terceros ... hijo de ... – WernerCD

Cuestiones relacionadas