2012-06-13 1 views
10

Je tente d'exécuter l'exemple DynamoDB fourni avec AWS SDK pour Java. Je le fais en utilisant eclipse, et ajouté le fichier aws-java-sdk-1.3.2.jar au chemin de construction du projet. La compilation va bien sûr, mais je reçois une exception d'exécution nommée NoClassDefFoundError. Je sais que cela signifie que la classe était là lors de la compilation mais n'a pas pu être trouvée à l'exécution. J'ai essayé d'ajouter le fichier jar aux variables d'env - n'a pas aidé. J'ai également vérifié et il n'y a aucun problème en utilisant d'autres fichiers jar externes sur d'autres projets. Même problème sur les deux fenêtres et Linux.NoClassDefFoundError lors de l'exécution d'un programme utilisant AWS SDK pour Java

aider quelqu'un?

Merci, ben.

Stack Trace:

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

Publiez votre trace de pile s'il vous plaît? –

+1

Avez-vous ajouté le fichier jar de la bibliothèque apache commons? il peut être trouvé ici: http://commons.apache.org/logging/download_logging.cgi –

+1

Oui, aussi le codec et le client HTTP. Tout ajouté au chemin de construction –

Répondre

1

Il ressemble à votre AWS JAR a besoin de quelques JARs supplémentaires pour utilisés mettent en œuvre, mais les éléments non-AWS (comme dans votre cas) de l'exploitation forestière. Si vous avez téléchargé une distribution contenant un répertoire "lib", il est probable que vous ayez configuré Eclipse uniquement pour utiliser AWS JAR au lieu de tous les fichiers JAR requis, y compris AWS et probablement tous les fichiers JAR dans le répertoire "lib".

+0

lib avait aws-java-sdk-1.3.2-sources.jar et aws-java-sdk-1.3.2-javadoc.jar dedans. Ils ne sont pas pertinents, n'est-ce pas? J'ai aussi obtenu un répertoire appelé third party, celui-ci contenait un commons-logging-1.1.1.jar et il est aussi dans le chemin de compilation ... –

+0

Vous avez raison de deviner que les sources et les pots de javadoc ne sont pas ce dont vous avez besoin ajouter. Le fichier tiers commons-logging-1.1.1.jar contient la classe manquante que vous recherchez. En aparté, vous pouvez configurer la bibliothèque AWS pour "inclure la source", puis raccorder le fichier JAR "sources" si vous voulez déboguer dans la bibliothèque aws. –

+0

commons-logging-1.1.1.jar est déjà dans le chemin de compilation. J'ai également trouvé org/apache/commons/logging/LogFactory.class manuellement dans le pot. Pouvez-vous penser à une raison quelconque pour laquelle la JVM ne le trouverait pas? –

12

A l'intérieur du dossier aws-java-sdk-1.3.2 vous trouverez un autre dossier nommé "tiers". Tous les fichiers tiers utilisés par Amazon SDK se trouvent dans ce dossier, y compris Apache Common Logging. Vous devez ajouter les fichiers requis à votre chemin de classe avec les fichiers JAR AWS SDK.

+0

Pourriez-vous fournir un lien Web à cette magie "tiers"? Dans la dépendance jar il n'y a pas un tel dossier. – Cherry

+1

Omg ... J'ai encerclé ce problème exact pour longtemps ... Bibliothèques de tiers ... fils d'un ... – WernerCD

Questions connexes