Eclipse – java.lang.ClassNotFoundException

En essayant de démarrer mon test JUnit avec Eclipse, je reçois une “ClassNotFoundException”. Lors de l’exécution de “mvn test” depuis la console, tout fonctionne correctement. En outre, aucun problème n’a été signalé dans Eclipse.

Ma structure de projet est la suivante:

  • projet parent (pom-packaging)
    • Projet Web (war-packaging – mon test JUnit est ici)
    • Projet Flex
    • Projet de configuration

edit: Comment ne pas trouver la classe? C’est une simple application HelloWorld sans bibliothèques spéciales.

Voici la configuration de l’exécution de mon JUnit: alt text http://www.walkner.biz/_temp/runconfig.png


Testclass (mais comme je l’ai dit, cela ne fonctionne pas non plus avec HelloWorld …):

import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import biz.prognoserechnung.domain.User; import biz.prognoserechnung.domain.UserRepository; import biz.prognoserechnung.domain.hibernate.UserHibernateDao; public class UserDaoTest { /** * the applicationcontext. */ private ApplicationContext ctx = null; /** * the user itself. */ private User record = null; /** * Interface for the user. */ private UserRepository dao = null; @Before public void setUp() throws Exception { Ssortingng[] paths = { "WEB-INF/applicationContext.xml" }; ctx = new ClassPathXmlApplicationContext(paths); dao = (UserHibernateDao) ctx.getBean("userRepository"); } @After public void tearDown() throws Exception { dao = null; } @Test public final void testIsUser() throws Exception { Assert.assertTrue(dao.isUser("John", "Doe")); } @Test public final void testIsNoUser() throws Exception { Assert.assertFalse(dao.isUser("not", "existing")); Assert.assertFalse(dao.isUser(null, null)); Assert.assertFalse(dao.isUser("", "")); } } 

J’ai rencontré cette situation plusieurs fois et, après de nombreuses tentatives, j’ai trouvé la solution.

Vérifiez le chemin de génération de votre projet et activez des dossiers de sortie spécifiques pour chaque dossier. Allez un par un dans chaque dossier source de votre projet et définissez le dossier de sortie que maven utilisera.

Par exemple, src/main/java votre projet Web doit avoir des target/classes dans le projet Web, les classes de test doivent également avoir target/test-classes classes target/test-classes sous le projet Web.

L’utilisation de cette configuration vous permettra d’exécuter des tests unitaires en éclipse.

Juste un autre conseil, si les tests de votre projet Web nécessitent des fichiers de configuration sous les ressources, veillez à inclure ce dossier en tant que dossier source et à effectuer la configuration de chemin de génération appropriée.

J’espère que cela aide.

Carlos a aidé! Eclipse – java.lang.ClassNotFoundException

Essayez de vérifier le classpath de la configuration de junit run:

  1. Ouvrez vos configurations d’exécution
  2. Cliquez sur le jUnit-Test que vous voulez démarrer
  3. aller à l’onglet classpath
  4. Essayez d’append un dossier (cliquez sur les entrées de l’utilisateur, cliquez sur Avancé, cliquez sur Ajouter des dossiers, cliquez sur OK et recherchez le dossier de sortie pour vos classes de test (celles que vous trouverez sous le chemin de compilation java de projektproperties, source))

travaille pour moi.

votre classpath de construction est correct, c’est pourquoi vous pouvez comstackr. le classpath de votre JUnit doit être vérifié. allez dans le menu Exécuter et choisissez “Ouvrir la boîte de dialog”. Vous devriez voir un arbre à gauche avec l’option JUnit. ouvrez ce noeud et recherchez et sélectionnez votre test. Dans le volet de droite, vous verrez un onglet pour classpath. jetez un coup d’oeil pour vous assurer que votre classe que le test essaie d’instancier serait trouvée.

modifier:

cela semble être un problème avec maven et son comportement après une version modifiée les dossiers de sortie Eclipse par défaut. J’ai vu des solutions décrites où

  • placer maven dans le chemin de boot AU-DESSUS des travaux jre, ou
  • courir mvn clean test fait le tour ou
  • rafraîchir tous vos projets éclipse, provoquant une reconstruction corrige le problème
  • aller à votre projet et en sélectionnant Maven-> Update Configuration résout le problème

avec les trois premiers, le problème était récurrent. la dernière me semble la meilleure, mais si ça ne marche pas, veuillez essayer les autres.

ici et voici quelques informations

Le problème est peut-être le fichier de classe manquant dans votre dossier de génération. Une solution consiste à nettoyer le projet et à le reconstruire.

C’était ma solution au problème. Bien sûr, beaucoup de choses peuvent le provoquer. Pour moi, c’était que Maven2 (pas le plugin pour Eclipse) configurait le profil eclipse pour utiliser un générateur différent (aspectJ) mais je n’avais pas le plugin dans eclipse./

http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html

Cheers Ramon Buckland

Il y a beaucoup de suggestions compliquées ici.

J’ai rencontré ce problème plusieurs fois avec des projets Maven après avoir déplacé des ressources par glisser-déposer ou effectuer un refactoring des noms de classe.

Si cela se produit, copiez (et non déplacez) le cas de test ( .java ) du problème via un navigateur de terminal / fichier vers un autre emplacement, right-click -> Delete dans Eclipse et choisissez de supprimer / copier le disque. copié le fichier à l’emplacement du fichier d’origine, puis sélectionnez votre projet dans Eclipse et appuyez sur F5 pour actualiser les ressources.

C’est rapide et facile à faire et a résolu le problème de manière permanente pour moi à chaque fois.

J’ai eu exactement le même problème mais j’ai compris! Accédez à votre fichier de projet et faites un clic droit dessus, puis cliquez sur Refresh ou appuyez sur F5. Ensuite, essayez de l’exécuter. Si cela ne fonctionne toujours pas, oubliez-le, car j’avais le même problème EXACT et cela signifie simplement que votre version d’Eclipse est une erreur.

Sachin a raison: Même avec un chemin de classe correct, l’onglet des problèmes montrera qu’une dépendance ou la ressource / le projet comporte une erreur qui doit être corrigée pour que maven crée et crée automatiquement des classes lorsque vous créez ou modifiez votre classe de test. .

“Salut,

C’est très vieux juillet (quelle année) mais j’ai eu le même problème.

Le problème réel était que eclipse n’était pas capable de générer un fichier de classe pour le fichier java, classpath était correct.

Consultez l’onglet Problème et vérifiez si votre projet manque quelque chose / fichier. vous pouvez créer un nouveau proj et append des fichiers un par un et les construire jusqu’à ce qu’il arrête la compilation et la création de classes (vérifiez l’espace de travail / proj / bin / package / folder pour les classes)

mais wierd mais vrai, ecplise échouait dans la complication parce que 4 des 20 fichiers java utilisaient une seule image qui manquait. et comme résultat aucun fichier java n’a été compilé.

CLASSPATH n’est pas un problème ici. ”

Nous avions l’exception exacte (en utilisant les outils SpringSource, tomcat, sur Win7) et la cause était que nous avions refacturé un nom de fichier (renommé un fichier) de SubDomain.java en Subdomain.java (D vs d) et en quelque sorte heurté SpringSource montrant le nouveau nom Subdomain.java. La solution consistait à supprimer le fichier (via SpringSource) et à le recréer sous le nom Subdomain.java et à copier-coller son contenu précédent. Aussi simple que cela.

Tout ce que j’ai fait était Propriétés -> Java Build Path -> Ordre et exportation -> Activé toutes les cases non cochées -> déplacé Junit au maximum

Je résous ce chemin Bulit —> bibliothèques —> append une bibliothèque —> Junit vérifier junit4

Hmm, semble un peu bizarre, essayez de l’exécuter avec l’annotation suivante en haut de la classe:

 @RunWith(SpringJUnit4ClassRunner.class) public class UserDaoTest { } 

et laissez-moi savoir comment vous vous en sortez.

Vérifiez que vous avez également activé la génération. Si vous voulez vous assurer que vos classes de test sont compilées correctement, effacez le dossier cible Maven (et tout dossier bin qu’Eclipse utilise peut-être). Utilisez-vous aussi m2eclipse, car je trouve cela un peu problématique.

La solution à mon problème était similaire: les libs étaient invalides. Si vous regardez dans le fichier .classpath du projet, vous verrez des balises classpathentry avec la clé / valeur kind = “lib”. Certains des miens étaient incorrects.

Je n’ai pas découvert cela avant d’avoir désactivé les parameters de validation. Autrement dit, il y avait tellement d’erreurs dans les fichiers JSP, etc., que les erreurs classpath n’étaient pas évidentes (ou même apparaissaient). En conséquence, rien n’était compilé dans les dossiers de sortie de destination, mais aucune erreur utile sur la raison.

Cliquez sur project->properties->Java build path->Source et vérifiez que chaque dossier src est toujours valide. Corrigez tout chemin manquant ou chemin incorrect et reconstruisez et exécutez le test. Cela résoudra le problème.

A essayé

 Link : [here][1] Open your run configurations Click on the jUnit-Test you want to start go to the classpath tab Try to add a folder (click on user ensortinges, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source)) 

travaillé après

Maven 2 LifeCycle >> test

J’avais essayé toutes les solutions sur cette page: rafraîchir le projet, reconstruire, nettoyer tous les projets, redémarrer Eclipse, réimporter (même) les projets, reconstruire maven et actualiser. Rien n’a fonctionné. Ce qui marchait , c’était de copier la classe sur un nouveau nom, ce qui fonctionne bien – bizarre mais vrai.

Après avoir toléré cela pendant un certain temps, je viens de le réparer en:

  1. Via le menu Run
  2. Sélectionnez Run Configurations
  3. Choisissez la configuration d’exécution associée à votre test unitaire.
  4. Suppression de l’entrée de la Run Configuration d’ Run Configuration en appuyant sur Supprimer ou en cliquant sur le X rouge.

Quelque chose a dû être foiré avec la configuration d’exécution en cache.

J’ai également été touché par ce problème et j’ai pu trouver une solution suffisante pour mon cas. Si votre projet Eclipse contient un fichier .classpath dans la racine de votre projet (voir la vue Navigateur au lieu de la vue Explorateur de packages), assurez-vous que votre chemin de classe Maven apparaît avant votre chemin de classe JRE Container.

      

Si votre projet ne possède pas de fichier .classpath, vous pouvez modifier le chemin de génération Java de votre projet pour modifier l’ordre et l’exportation. Si votre projet contient le fichier .classpath et que vous modifiez uniquement votre commande dans le chemin de génération Java, vous verrez que le classement n’est pas affecté et que le problème persiste.

Et un projet-> clean ne fait jamais de mal aux choses après avoir fait le changement.

La suppression du projet d’eclipse (pas du disque dur) qui, d’une certaine manière, nettoie l’espace de travail et réimporte le projet dans eclipse a fonctionné pour moi.

Habituellement, ce problème se produit lors de l’exécution de l’outil Java Application java incapable de trouver le fichier de classe.

Principalement dans le projet Maven, nous voyons ce problème parce que le problème de synchronisation Eclipse-Maven . Pour résoudre ce problème: Maven-> Update Configuration

Avez-vous essayé de cliquer avec le bouton droit de la souris sur la racine de votre projet en sélectionnant “properties” et en vous assurant que le CLASSPATH est correct? Si je me souviens bien, c’est comme ça que vous le faites.

Quelque chose sur la façon dont Eclipse exécute les tests unitaires qui vous obligent à append le JAR junit au CLASSPATH d’exécution d’une manière particulière?

J’utilise IntelliJ, donc je n’ai pas ces problèmes.

Je vérifierais Eclipse moi-même, mais je préfère ne pas l’avoir sur mon bureau.

Veuillez pointer pour corriger JDK à partir de Windows> Préférences> Java> JRE installé.

Ne pointez pas sur jre, pointez sur un JDK approprié. J’ai indiqué JDK 1.6U29 et actualisé le projet.

Par la suite, le problème a disparu et les tests jUnit fonctionnent correctement.

Merci,
-Tapas

J’ai récemment rencontré une erreur dans Eclipse, c’est-à-dire que l’IDE Eclipse ne pouvait pas trouver la classe de test Unit, quelle que soit la modification des configurations. En tirant les leçons des articles précédents et d’autres sites Web, j’ai vérifié et sortingé les informations sur les chemins d’access et les sources, puis parcouru le dossier source et les bibliothèques, à la fois dans “Run Configuration” et “Java Build Path “config windows, et j’ai également nettoyé le projet et l’ai reconstruit, mais aucune des astuces ne fonctionne pour moi. Le projet Java spécifique est un ancien projet compilé ANT et contient de nombreux jars inclus dans la bibliothèque Eclipse.

Ensuite, j’ai changé la classe de test unitaire pour append une méthode main () et faites un clic droit pour “Exécuter en tant que” une application Java au lieu du test JUnit, et soudainement, Eclipse semble se réveiller et identifier la classe correctement. Ensuite, je suis revenu à une application de test unitaire, et elle fonctionne toujours.

Cela semble être un bogue dans Eclipse, je suppose que le grand nombre de bibliothèques (> 260) peut perturber la capacité de la JVM à localiser ma classe JUnit.

Assurez-vous que votre configuration de lancement de test ne contient PAS les lignes suivantes, OU essayez d’activer la gestion automatisée des dépendances Maven.

   

J’ai essayé tout ce que je lisais dans ce long message et, incroyablement, ce qui a fonctionné pour moi, plutôt que de cliquer sur la classe de test et de sélectionner Run as JUnit test , de cliquer sur la méthode de JUnit test Je ne sais pas pourquoi?

Le test JUnit à l’intérieur d’eclipse m’a aussi donné NoClassDefFoundError. L’exécution de ‘mvn clean test’ en ligne de commande m’a donné l’erreur suivante sur plusieurs fichiers: En-tête LOC invalide (mauvaise signature) La suppression de ces fichiers JAR du repository local et l’exécution de ‘mvn clean test’

J’ai eu le même problème. Tout ce que j’ai fait était,

je). Artefacts Eclipse générés

mvn clean eclipse:eclipse

ii). Actualisez le projet et relancez votre test de junit. Devrait fonctionner correctement

En outre, DOUBLE-CHECK la boîte de dialog “Web Deployment Assembly”.

Cela peut être trouvé: Propriétés du projet-> Assemblée de déploiement.

Récemment, un plug-in eclipse a modifié l’un de mes projets Web, et il a ajouté ~ mystérieusement ~ les répertoires de test maven / src / test / java, / src / test / resources à l’ensemble de déploiement. UGGGG !!!

C’est pourquoi mon projet a bien fonctionné quand j’ai construit et déployé juste maven vers tomcat, pas d’exceptions ClassNotFound … Cependant, quand j’ai fait le déploiement via Eclipse, Whammo !! Je commence à obtenir ClassNotFoundExceptions car le TestCode est en cours de déploiement.

Eric

Cela signifie que votre fichier pom.xml a des problèmes non résolus. Ouvrez la résolution des problèmes en conséquence. Ensuite, vous pourrez exécuter les scénarios de test sans rencontrer l’exception classnotfound.

La modification de l’ordre des artefacts de classpath dans le chemin de génération Java a résolu le problème pour moi.

  1. Cliquez avec le bouton droit sur le projet et accédez au chemin de génération de projets.
  2. Accédez à l’onglet Ordre et exportation et déplacez la bibliothèque du système JRE après les sources.

Cela devrait le réparer.

JUnit 4.4 n’est pas pris en charge par l’intégration de JMockit / JUnit. Seules les versions 4.5 ou ultérieures sont sockets en charge.