58 votes

Classe de test JUNIT dans Eclipse - java.lang.ClassNotFoundException

J'essaie d'exécuter mon test junit (pour vérifier qu'un fichier de propriétés se charge correctement) mais j'obtiens ClassNotFoundException bien que la classe soit là et que toutes les bibliothèques requises soient là aussi.

Voici l'erreur que je reçois :

Class not found ConfigurationManagerTest                                                 java.lang.ClassNotFoundException: ConfigurationManagerTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    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)

Avez-vous une idée de la façon de résoudre ce problème ?

Merci.

17 votes

Essayez de nettoyer et de construire votre projet.

1 votes

J'ai essayé plusieurs fois, mais j'obtiens toujours la même erreur.

3 votes

Ouvrez la fenêtre Run Configuration dans eclipse, sélectionnez le test unitaire que vous avez exécuté et allez dans l'onglet classpath : ici vous pouvez vérifier ce qui est réellement dans le classpath.

41voto

Alan Escreet Points 1657

ConfigurationManagerTest n'est pas trouvé dans votre classpath. Assurez-vous que le ConfigurationManagerTest.class est disponible dans votre classpath.

Il peut ne pas exister s'il n'a pas été compilé avec succès ou s'il est créé dans un répertoire que vous n'avez pas indiqué au projet Eclipse comme devant se trouver dans le classpath.

En supposant que vous ayez placé vos classes de test dans un dossier distinct, assurez-vous qu'il apparaît dans la vue "Package Explorer" (plutôt que dans la vue "Navigator").

Dans les propriétés du projet, "Java Build Path" et l'onglet "Source", vous pouvez également voir si le dossier source est inclus pour la construction ainsi que l'endroit où les fichiers .class sont générés.

24voto

Gangnus Points 7646

Il y a une autre possibilité. J'ai eu le même problème à l'instant et aucune des solutions proposées ici ne m'a aidé. A part supprimer et recréer le projet - je n'ai pas voulu essayer. Ce qui m'a aidé, c'est de nettoyer le projet deux fois immédiatement l'un après l'autre ! Nettoyer + construire peut être répété un nombre illimité de fois - cela ne sert à rien. Seulement clean+clean et après cela la construction se passe bien. (Eclipse 3.6). Bien sûr, vous devez désactiver la construction automatique pour cela.

Edit : Ce post a reçu son dernier plus le 15.11.2017. Donc, le problème (et la solution) reste d'actualité.

0 votes

Merci, cela m'a aidé, mais j'ai dû désactiver la construction automatique. J'ai également dû résoudre d'autres problèmes de bibliothèques manquantes sans rapport avec jUnit.

0 votes

N'a pas aidé du tout (Eclipse 4.5)

1 votes

@ChristianVielma Je l'espère. Pendant l'évolution des 9 versions, ils devraient supprimer le bug !

4voto

Guy Points 3049

Un autre problème possible est un constructeur manquant (il empêchera la construction de votre fichier .class).

Vérifiez que votre fichier .project contient les lignes suivantes

<buildSpec>
  <buildCommand>
    <name>org.eclipse.jdt.core.javabuilder</name>
    <arguments>
    </arguments>
  </buildCommand>
</buildSpec>
<natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

0 votes

C'était mon problème - j'avais oublié que mon projet était compatible avec AspectJ et donc avec le constructeur AJDT, que je n'avais pas installé. C'est ennuyeux qu'Eclipse refuse discrètement de construire le projet dans ces cas-là.

0 votes

Cela a réglé mon problème. Merci mec :)

3voto

karthik Points 31

Si c'est un projet maven, vous devez nettoyer et installer le projet.

$ mvn clean install

3voto

Robert Points 11

Cela m'est arrivé lorsque j'ai glissé et déposé des classes de test dans différents paquets. J'ai simplement fait ce qui suit

  1. Enregistrez la classe dans un éditeur de texte.
  2. Suppression de la classe incriminée de l'explorateur de projet d'eclipse.
  3. J'ai recréé la classe.

Bingo ! Je peux maintenant exécuter le test !

0 votes

Super ! Aucun de mes tests ne compilait plus (aucun fichier .class). J'ai supprimé et recréé une seule classe en utilisant votre méthode, et soudain toutes les classes de test ont compilé à nouveau.

0 votes

Cela n'a pas du tout aidé dans mon cas (Eclipse 4.5).

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