123 votes

java.lang.NoClassDefFoundError : org/hamcrest/SelfDescribing

En cours d'exécution junit test en eclipse J'obtiens ceci Exception :

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

J'ai ajouté junit.jar le fichier de la bibliothèque.

J'ai essayé différentes versions de junit.jar : 4.4 , 4.8 etc.

Comment puis-je corriger cette exception ?

1voto

Logan Points 1484

Cela ressemble à un problème de classpath, il y a donc plusieurs façons différentes de procéder. D'où vient org/hamcret/SelfDescribing ? S'agit-il de votre classe ou d'un autre bocal ?

Essayez d'aller dans le chemin de construction de votre projet et dans l'onglet Bibliothèques, ajoutez une bibliothèque. Vous devriez être en mesure de choisir JUnit dans votre projet. C'est un peu différent que de simplement avoir le fichier jar JUnit dans votre projet.

Dans votre configuration d'exécution pour le test JUnit, vérifiez le Classpath. Vous pouvez probablement résoudre ce problème en vous assurant que votre Classpath peut voir la classe SelfDescribing. L'option Run dans Eclipse a un ensemble d'options différent pour les options JUnit.

1voto

Robert F Points 48

Si ce problème survient dans un projet RCP, cela peut être dû au fait que JUnit a été explicitement importé.

Vérifiez l'éditeur de votre plugin.xml sous Dependencies retirer l'onglet org.junit à partir des paquets importés et ajoutez org.junit à la rubrique Plug-ins requis.

1voto

ACV Points 5246

Le problème est que lorsque vous configurez eclipse pour qu'il pointe vers JRE au lieu de JDK . JRE a junit4.jar en el lib/ext mais pas hamcrest.jar :) La solution est donc de vérifier les JREs installés dans Eclipse, de supprimer celui qui existe et d'en créer un nouveau qui pointe vers votre site Web. JDK .

1voto

Devendra Sharma Points 87

Cela se produit lorsque vous exécutez Ant via la ligne de commande. Les dépendances implicites de l'utilisateur sont ajoutées dans le classpath à la fin et prennent le pas sur le classpath ajouté par le projet. Exécutez Ant avec -nouserlib drapeau. Les dépendances implicites seront exclues du classpath.

1voto

Alex Xiao Points 23

Il existe une meilleure solution pour résoudre ce problème. ajouter une dépendance

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-all</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X