java.lang.NoClassDefFoundError dans junit
J'obtiens cette erreur en java dans mon test junit code. J'ai regardé sur le net et on me dit que je besoin d'ajouter de l'junit.jar dans le classpath.
Dans Eclipse, j'ai ajouté dans le classpath du Projet de Propriétés de windows mais j'ai toujours l'initialisation erreur. Que dois-je faire..?
C'est la trace de l'erreur:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 25 more
- Quelle classe est manquant selon l'erreur?
Vous devez vous connecter pour publier un commentaire.
Addendum: Localement, j'ai créé un Utilisateur "Bibliothèque" et ajouté à mes projets qui a
Le même problème peut se produire si vous avez téléchargé JUnit pot de JUnit site web, mais oublié de télécharger le Hamcrest jar - les deux sont nécessaires (disent les instructions pour télécharger les deux, mais j'ai sauté à l'avance! Oops)
Lors de l'utilisation de Maven, mise à jour artefact junit:junit, par exemple, le 4.8.2 à 4.11.
NoClassDefFoundError: org/junit
...caused by ClassNotFoundException: org.junit.runners.model.InitializationError
pour moi. J'ai été en utilisant Junit 4.8. Le déplacement à 4.11 travaillé.Sur Eclipse, j'ai été en mesure de résoudre le problème ci-dessus, en suivant les étapes ci-dessous :
Cliquez-droit sur le fichier de test à laquelle vous souhaitez exécuter,
Sélectionnez Exécuter en tant Qu' -> Exécuter les Configurations -> Sélectionnez Classpath tab -> Sélectionnez l'amorçage des Entrées -> Sélectionnez Avancé -> Sélectionnez Ajouter une bibliothèque -> Sélectionnez JUnit -> Next ->Sélectionnez JUnit4 à partir de la liste déroulante -> Finition
Puis Sélectionnez s'Appliquent -> Exécuter
Le org/hamcrest/SelfDescribing classe n'est pas sur le chemin de classe.
Essayez les étapes ci-dessous:
Il a travaillé pour moi.
J'ai eu le même problème, le problème était dans l' @ContextConfiguration en moi classes de test, j'ai été chargement de la servlet contexte aussi je viens de changer:
à:
et c'est tout.
de cette façon, je suis seulement le chargement de tous les fichiers avec le modèle *-context.xml en moi test chemin.
La raison pour cela est "hamcrest-core" pot n'est pas dans le classpath comme il ne vient pas directement avec junit jar. Il y a donc deux façons de résoudre ce problème:
Ces étapes ont travaillé pour moi, lorsque l'erreur a montré que la classe de Filtre est manquante (comme indiqué dans cette faux-diplicated question: JUnit: NoClassDefFoundError: org/junit/runner/manipulation/Filtre ):
problème).
Propriétés, et en vertu de l'Exécuter/Déboguer les paramètres, supprimer toutes les entrées
de la des Configurations de Lancement pour ce fichier. Cliquez sur Appliquer et fermer.
Propriétés, et en vertu de l'Exécuter/Déboguer les paramètres, supprimer toutes les entrées
impliquant JUnit depuis le Lancement de Configurations. Cliquez sur Appliquer et fermer.
Merci pour ces réponses pour me donner l'astuce pour cette solution: https://stackoverflow.com/a/34067333/5538923 et https://stackoverflow.com/a/39987979/5538923).
Cette erreur vient aussi si les 2 versions de hamcrest-bibliothèque ou hamcrest-core est présent dans le classpath.
Dans le pom de fichier, vous pouvez exclure les extra version et ça fonctionne.
même Junit4.11.jar doesnot ont l'hamcrest-core.jar. J'ai ajouté explicitement dans le classpath et le problème a été résolu.
Ajouter mon grain de sel à d'autres réponses.
Vérifier si vous n'avez pas, par hasard, de la création de votre classe de test sous
src/main/java
au lieu de l'habituelsrc/test/java
. Le premier est la valeur par défaut dans Eclipse lorsque vous créez une nouvelle classe de test pour quelque raison que ce soit et peut être négligé. Il peut être aussi simple que cela.Si vous avez plus d'une version de java, il peut interférer avec votre programme.
Je vous suggère de télécharger JCreator.
Lorsque vous le faites, cliquez sur configurer, d'options et de JDK Profils. Supprimer les anciennes versions de Java à partir de la liste. Puis cliquez sur le bouton de lecture. Votre programme doit apparaître.
Si ça ne marche pas, appuyez sur ctrl+alt+O puis appuyez sur le bouton play de nouveau.