Lorsque j'essaye de démarrer mon JUnit-Test en dehors d'Eclipse, j'obtiens une "ClassNotFoundException". Lors de l'exécution de "mvn test" à partir de la console - tout fonctionne bien. De plus, aucun problème n'a été signalé dans Eclipse.
La structure de mon projet est la suivante:
- projet parent (pom-packaging)
- Projet Web (war-packaging - mon JUnit-test est ici)
- Projet Flex
- Projet de configuration
edit: Comment la classe ne peut-elle pas être trouvée? C'est une simple application HelloWorld sans bibliothèques spéciales.
Voici la configuration d'exécution de mon JUnit: texte alternatif http://www.walkner.biz/_temp/runconfig.png
Testclass (mais comme je l'ai dit; cela ne fonctionne pas non plus avec un simple 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 {
String[] 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("", ""));
}
}
Réponses:
J'ai rencontré cette situation à plusieurs reprises et, après de nombreuses tentatives, j'ai trouvé la solution.
Vérifiez le chemin de construction de votre projet et activez des dossiers de sortie spécifiques pour chaque dossier. Parcourez un par un chaque dossier source de votre projet et définissez le dossier de sortie que maven utiliserait.
Par exemple, votre projet Web
src/main/java
devrait avoirtarget/classes
sous le projet Web, les classes de test devraienttarget/test-classes
également avoir sous le projet Web et ainsi de suite.L'utilisation de cette configuration vous permettra d'exécuter des tests unitaires dans eclipse.
Juste un conseil de plus, si les tests de votre projet Web nécessitent des fichiers de configuration qui se trouvent sous les ressources, assurez-vous d'inclure ce dossier en tant que dossier source et de configurer correctement le chemin de construction.
J'espère que ça aide.
la source
@Ignore
raccourcis partout et d'interface graphique!L'approche de Carlos a aidé! Eclipse - java.lang.ClassNotFoundException
Essayez de vérifier le classpath de la configuration d'exécution junit:
travaille pour moi.
la source
votre chemin de classe de construction est correct, c'est pourquoi vous pouvez compiler. le chemin de classe de votre JUnit doit être vérifié. allez dans le menu Exécuter et choisissez «ouvrir la boîte de dialogue d'exécution». là-dedans, vous devriez voir un arbre sur la gauche avec JUnit en option. ouvrez ce nœud et recherchez et sélectionnez votre test. dans le volet droit, vous verrez un onglet pour classpath. jetez un œil pour vous assurer que la classe que le test tente d'instancier sera trouvée.
Éditer:
cela semble être un problème avec maven et son comportement après qu'une version ait changé les dossiers de sortie par défaut d'Eclipse. j'ai vu des solutions décrites où
mvn clean test
fait l'affaire ouavec les trois premiers, il y avait des rapports de la question récurrente. le dernier me semble le mieux, mais s'il ne fonctionne pas, essayez les autres.
ici et voici quelques infos
la source
Le problème peut être le fichier de classe manquant dans votre dossier de construction. Une solution consiste à nettoyer le projet et à le reconstruire.
la source
L'activation de [x] Utiliser un JAR temporaire pour spécifier le chemin de classe (pour éviter les limitations de longueur de chemin de classe ) dans l' onglet Chemin de classe de la configuration Exécuter a fait l'affaire pour moi.
Si votre projet est énorme et que vous avez beaucoup de dépendances d'autres projets frères et dépendances maven, vous pourriez atteindre les limites de longueur du chemin de classe et cela semble être la seule solution (à part raccourcir le répertoire de votre dépôt local maven (le nôtre commence déjà à c: / m2)
la source
Il y a de nombreuses suggestions alambiqué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 avoir refactoré les noms de classe.
Si cela se produit, copiez simplement (ne déplacez pas) le cas de test (
.java
) via le terminal / navigateur de fichiers vers un autre emplacement,right-click -> Delete
dans Eclipse et choisissez de supprimer sur le disque lorsque l'option est donnée, déplacez / copiez le fichier copié vers 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 façon permanente pour moi à chaque fois.
la source
J'ai eu exactement le même problème mais je l'ai compris! Accédez à votre fichier de projet et faites un clic droit dessus, puis cliquez
Refresh
ou appuyez sur F5. Ensuite, essayez de l'exécuter. Si cela ne fonctionne toujours pas, oubliez-le, car j'ai eu le même problème EXACT et cela signifie simplement que votre version d'Eclipse est une poubelle.la source
C'était ma solution au problème. Bien sûr, de nombreuses choses peuvent le provoquer. Pour moi, c'était que Maven2 (pas le plugin pour Eclipse) configurait le profil d'éclipse pour utiliser un constructeur différent (aspectJ) mais je n'avais pas le plugin dans eclipse./
http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html
Vive Ramon Buckland
la source
Le droit de Sachin: même avec un chemin de classe correct, l'onglet Problèmes montrera que certaines dépendances ou la Ressource / projet a une erreur qui doit être corrigée pour que maven crée et crée automatiquement des classes lorsque vous créez ou effectuez une modification dans 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 a révélé qu'eclipse n'était pas en mesure de générer un fichier de classe pour le fichier java, le chemin de classe était correct.
Consultez l'onglet Problème et vérifiez s'il manque quelque chose / fichier dans votre projet. vous pouvez créer un nouveau projet et ajouter des fichiers un par un et les construire jusqu'à ce qu'il arrête de compiler et de créer des classes (vérifiez le dossier workspace / proj / bin / package / pour les classes)
son étrange mais vrai, ecplise échouait dans la compliation parce que 4 des 20 fichiers java utilisaient une seule image qui manquait. et par conséquent, aucun des fichiers java n'a été compilé.
CLASSPATH n'est pas un problème ici. "
la source
Nous avons eu l'exception exacte (en utilisant SpringSource Tools, tomcat, sur Win7) et la cause était que nous avions refactoré un nom de fichier (renommé un fichier) de SubDomain.java à Subdomain.java (D vs d) et d'une manière ou d'une autre il est entré en collision si SpringSource était affichant le nouveau nom Subdomain.java. La solution était de supprimer le fichier (via SpringSource) et de le recréer sous le nom Subdomain.java et de copier-coller son ancien contenu. Aussi simple que cela.
la source
Je résolve ce chemin Bulit ---> bibliothèques ---> ajouter une bibliothèque ---> Junit check junit4
la source
cliquez sur
project->properties->Java build path->Source
et vérifiez que chaquesrc
dossier est toujours valide existe ou récemment supprimé. Corrigez tout chemin manquant ou chemin incorrect, reconstruisez et exécutez le test. Cela résoudra le problème.la source
Tout ce que j'ai fait était Propriétés -> Chemin de construction Java -> Ordre et exportation -> Activé toutes les cases non cochées -> Déplacement de Junit tout en haut
la source
A essayé
travaillé après
Maven 2 LifeCycle >> test
la source
J'avais essayé toutes les solutions de cette page: actualiser 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 a fonctionné, c'est de copier la classe sous un nouveau nom qui fonctionne bien - bizarre mais vrai.
Après avoir supporté cela pendant un certain temps, je viens de le réparer en:
Run
menuRun Configurations
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.
la source
La suppression du projet de eclipse (pas du disque dur) qui en quelque sorte nettoie l'espace de travail et réimporte le projet dans eclipse a de nouveau fonctionné pour moi.
la source
Habituellement, ce problème se produit lors de l'exécution de l'
java
outil d' application Java incapable de trouver le fichier de classe.Surtout 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-> Mettre à jour la configuration
la source
Avez-vous essayé de faire un clic droit sur la racine de votre projet, en sélectionnant "propriétés" et en vous assurant que le CLASSPATH est correct? Si je me souviens bien, c'est ainsi que vous procédez.
Quelque chose sur la façon dont Eclipse exécute les tests unitaires qui vous oblige à ajouter le JAR junit au CLASSPATH d'exécution d'une manière spéciale?
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.
la source
Hmm, ça a l'air un peu bizarre, essayez de l'exécuter avec l'annotation suivante en haut de la classe:
et dites-moi comment vous vous en sortez.
Vérifiez que la compilation est également activée automatiquement. Si vous voulez vous assurer que vos classes de test sont correctement compilées, effacez le dossier cible Maven (et tout dossier bin utilisé par Eclipse). Utilisez-vous également m2eclipse, car je trouve que c'est un peu problématique.
la source
La solution à mon problème qui était similaire: les bibliothèques n'étaient pas valides. 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 ne l'ai découvert que lorsque j'ai désactivé les paramètres de validation. Autrement dit, il y avait tellement d'erreurs dans les fichiers JSP, etc., que les erreurs de chemin de classe n'étaient pas évidentes (ni même apparaissaient). En conséquence, rien n'était compilé dans les dossiers de sortie de destination, mais aucune erreur utile expliquant pourquoi.
la source
Veuillez pointer le JDK correct à partir de Windows> Préférences> Java> JRE installé.
Ne pointez pas vers jre, pointez vers un JDK approprié. J'ai indiqué le JDK 1.6U29 et actualisé le projet.
Par la suite, le problème a disparu et les tests jUnit fonctionnent correctement.
Merci,
-Tapas
la source
J'ai récemment rencontré la même erreur dans Eclipse, c'est-à-dire que l'EDI Eclipse n'a pas pu trouver la classe de test unitaire, peu importe comment je change les configurations. En apprenant des articles précédents ici et sur d'autres sites Web, j'ai vérifié et triplé le chemin de classe et les informations sur la source, et j'ai déplacé de haut en bas le dossier source et les bibliothèques, à la fois dans la "Configuration d'exécution" et dans le "Chemin de construction Java "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 fichiers JAR dans la bibliothèque Eclipse.
Ensuite, j'ai changé la classe de test unitaire pour ajouter une méthode main () et cliquez dessus avec le bouton droit de la souris pour "Exécuter en tant que" une application Java au lieu de tester JUnit, et soudain, Eclipse semble se réveiller et a identifié la classe correctement. Ensuite, je suis retourné à une application de test unitaire, et cela 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.
la source
J'ai également été touché par ce problème et j'ai pu trouver une solution suffisante pour mon cas. Si votre projet Eclipse a un fichier .classpath à la racine de votre projet (voyez-le dans 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 de conteneur JRE.
Si votre projet ne possède pas de fichier .classpath, vous pouvez modifier le chemin de génération Java de votre projet pour changer l'ordre et l'exportation. Si votre projet a le fichier .classpath et que vous ne modifiez votre ordre que dans le chemin de compilation Java, vous verrez que l'ordre n'est pas affecté et le problème continuera à se produire.
Et un projet -> nettoyer ne fait jamais de mal aux choses après avoir effectué le changement.
la source
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.
la source
J'ai essayé tout ce que j'ai lu dans ce long article et, incroyablement, ce qui a fonctionné pour moi était, 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 test et d'exécuter en tant queJUnit test
. Je ne sais pas pourquoi?la source
Le test JUnit de l'intérieur de l'éclipse m'a également donné NoClassDefFoundError. L'exécution de 'mvn clean test' à partir de la ligne de commande m'a donné l'erreur suivante sur plusieurs jars: en-tête LOC invalide (mauvaise signature) La suppression de ces jars du référentiel m2 local et l'exécution de 'mvn clean test' ont à nouveau résolu mon problème.
la source
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 réexécutez votre test junit. Cela devrait fonctionner correctement.
la source
En outre, DOUBLE-VÉRIFIEZ la boîte de dialogue "Web Deployment Assembly" de l'éclipse.
Cela peut être trouvé: Propriétés du projet-> Assemblée de déploiement.
Récemment, un plugin 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'assembly de déploiement. UGGGG !!!
C'est pourquoi mon projet a bien fonctionné quand j'ai construit et déployé juste maven directement sur tomcat, pas d'exceptions ClassNotFound ... Cependant, quand j'ai fait le déploiement via Eclipse, Whammo !! Je commence à recevoir des ClassNotFoundExceptions car le TestCode est en cours de déploiement.
Eric
la source
Cela signifie que votre pom.xml a des problèmes non résolus. Ouvrez la vue des problèmes résoudre en conséquence. Ensuite, vous pourrez exécuter les cas de test avec succès sans rencontrer l'exception classnotfoundexception.
la source
La modification de l'ordre des artefacts de chemin de classe dans le chemin de construction Java l'a résolu pour moi.
Cela devrait le réparer.
la source