Étrange «java.lang.NoClassDefFoundError» dans Eclipse

J’ai un projet Java dans Eclipse qui fonctionne parfaitement jusqu’à cet après-midi, lorsque j’ai mis à jour certains fichiers (y compris un fichier ant build.xml). Lorsque je construis le projet, l’erreur suivante apparaît:

java.lang.NoClassDefFoundError: proj/absa/FrontEnd/ApplicationStarter Caused by: java.lang.ClassNotFoundException: proj.absa.FrontEnd.ApplicationStarter 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) Exception in thread "main" 

Est-ce que quelqu’un a une idée du problème?

Faire Projet-> Nettoyer… dans Eclipse a résolu ce problème pour moi.

java.lang.ClassNotFoundException signifie des problèmes CLASSPATH. Ne pas avoir d’indice implique que vous supposez que le CLASSPATH est défini correctement, mais ce n’est pas le cas.

Si vous utilisez Eclipse, assurez-vous que le répertoire dans lequel se trouvent vos fichiers .class compilés se trouve dans CLASSPATH et contient les fichiers .class nécessaires.

Si vous construisez avec Ant, assurez-vous de voir quelque chose comme ceci dans votre build.xml:

          

UPDATE: Soit vous n’avez pas JAVA_HOME / bin dans votre PATH ou vous avez téléchargé le JRE au lieu du JDK. Vérifiez le répertoire où vous avez installé Java et vérifiez si votre répertoire / bin contient javac.exe. Si vous n’avez pas de / bin, téléchargez le JDK et installez-le.

Si vous avez un / bin avec javac.exe, vérifiez votre PATH pour voir que le répertoire Java / bin se trouve dans le PATH. Une fois que vous l’avez défini, ouvrez un shell de commande et tapez “javac -version” pour vous assurer que tout va bien.

Quel JDK avez-vous dit à Eclipse d’utiliser?

Comme mentionné ci-dessus, “java.lang.ClassNotFoundException signifie problèmes CLASSPATH.”

Dans ma configuration, je lance Maven pour construire (au lieu de Ant) et utiliser Eclipse (au lieu de Netbeans).

Habituellement, pour créer et configurer le projet, je lancerai «mvn clean», «mvn comstack», «mvn eclipse: eclipse» à partir de l’invite de commande Windows. La dernière commande ‘mvn eclipse: eclipse’ met à jour la configuration du projet en créant des fichiers .classpath et .project.

Pour résoudre le problème, j’ai supprimé les deux fichiers (.classpath et .project) puis relancé les trois commandes.

Donc, en fonction de votre configuration, essayez de trouver les fichiers classpath / project (effectuez une sauvegarde) et supprimez-les. Vous pouvez également essayer de supprimer également le dossier cible / release / build (quel qu’il soit créé à partir de la commande build). Ensuite, essayez de construire / comstackr / configurer votre projet à nouveau.

Je pensais que mon problème et sa solution pouvaient aider. Alors, j’ai eu cette même erreur dans mon projet eclipse.Dans mon projet, j’ai quelques fichiers JAR et le NOCLASSDEFERROR a été lancé pour un fichier dans le fichier JAR.

Mes fichiers de bibliothèque faisaient partie d’un nom de dossier “lib” dans mon projet heirarchy. J’ai changé le nom de mes dossiers en “libs” et voila cela a fonctionné.

(J’ai regardé dans le fichier .classpath et j’avais des paires clé-valeur, et l’entrée de mon fichier jar avait la clé “lib” et je pensais que changer de lib pourrait être utile.)

Je le vois un peu trop souvent ces derniers temps. Juste aujourd’hui j’ai eu le problème avec une classe dans le même paquet que la classe affectée (drapeau rouge)!

Quitter eclipse et redémarrer fonctionne généralement pour résoudre le drapeau rouge sur la classe affectée, mais parfois un drapeau rouge est laissé sur le projet, puis je dois également fermer le projet et le rouvrir également pour éliminer le drapeau rouge autonome. Il semble assez étrange de voir un drapeau rouge sur un projet, sans aucun drapeau rouge dans aucun de ses répertoires enfants.

Avec les clusters de projets Maven, je ferme et ouvre tous les projets du cluster après le redémarrage de l’éclipse.

Bien que ce soit une supposition féroce et que cela ne soit pas applicable dans votre situation spécifique, cela aurait pu me sauver une heure environ.

Si vous avez “converti” un projet simple en projet Java (en éditant un fichier .project et en ajoutant une balise appropriée), assurez-vous également de bien spécifier – mon projet n’a pas été créé même si Eclipse a tenté et n’a exécuté aucun générateur (Succès!):

   org.eclipse.jdt.core.javabuilder     

Moi aussi, j’étais confronté au même problème. Puis découvert que le chemin du dossier lib dans le classpath n’était pas défini correctement.

Stab dans le noir, mais j’avais le même problème. Je l’ai résolu en supprimant le projet de mon espace de travail (veillez à ne pas supprimer du disque), puis réimportez le projet et cela a fonctionné correctement. Je pense que le mien a été causé par un mauvais arrêt de Windows (le redémarrage de Windows correctement n’a pas corrigé le problème). HTH.

J’ai trouvé un fichier jar dans WEB-INF / lib qui était dans mon classpath, mais quand je l’ai mis à niveau vers la dernière version, le nom du fichier était différent. Suppression de l’ancien fichier jar du chemin de classe et ajout du nouveau fichier. Curieusement, Eclipse ne semblait pas m’avertir que l’ancien fichier jar manquait et semblait comstackr, cependant rien ne se compilait, d’où le NoClassDefFoundError. La clé pour moi était que le répertoire build / classes était configuré dans le projet en tant que dossier de sortie, mais aucun fichier de classe n’était créé là après la construction.

Cela semble être une erreur commune. La solution consiste à:

  • clic droit sur le projet
  • choisir des propriétés
  • choisissez ‘Java Comstackr’
  • Décochez la première case en disant “Activer les parameters spécifiques au projet”
  • appliquer
  • enregistrer
  • courir

J’espère que cela aide dans certains cas.

aller pour construire le chemin et vérifier les erreurs dans les fichiers jar, ils peuvent être déplacés ailleurs. si vous avez des erreurs sur les fichiers jar. Retirez-les et localisez-les en cliquant sur Ajouter des jars externes.

-cnufederer

Assurez-vous que toutes les bibliothèques que vous utilisez dans votre projet ne sont pas référencées par un autre projet dans l’espace de travail. C’était mon problème.

J’ai eu un problème similaire et cela concernait les bibliothèques référencées par le chemin de compilation java; Je faisais référence à des bibliothèques qui n’existaient plus lorsque j’ai effectué une mise à jour. Lorsque j’ai supprimé ces références, le projet a recommencé à fonctionner.

Les bibliothèques sont répertoriées sous Java Build Path dans la fenêtre des propriétés du projet.

J’espère que cela t’aides.

Le problème sera à la fois classpathref = “master-classpath”, veuillez vérifier que la valeur est correcte

Lorsque vous lancez votre programme, il stocke la configuration de lancement que vous pouvez modifier. Si quelque chose a changé dans votre processus de construction / exécution, vous pouvez avoir des parameters incorrects. Par exemple, je travaillais avec maven, et certaines configurations de lancement faisaient référence à maven2_classpath_container. Lorsque vous supprimez la configuration de lancement et que vous exécutez à nouveau le programme, cela peut fonctionner à nouveau.

Je vois que les gens ont déjà parlé du chemin de classe. Comme il n’y a pas de réponse acceptée, je suppose que ce n’est pas lié au chemin de classe. Je voudrais donc append que le fait de ne pas avoir de directive sur les paquets peut aussi conduire à des erreurs de classe introuvable.

Cela a fonctionné pour moi en éclipse :

  1. Goto Project -> Propriétés
  2. Cliquez sur l’onglet Source
  3. Décochez la case -> Autoriser les dossiers de sortie pour les dossiers source
  4. Appliquer les modifications et exécuter le projet

Java.lang.NoClassDefFoundError peut également se produire lors de la seconde tentative d’instanciation de la classe après la première tentative d’exception ou d’erreur. Le chargeur de classes semble mettre en cache le fait de ne pas pouvoir instancier la classe lors de la première tentative, mais pas la raison. Ainsi, il rapporte NoClassDefFoundError.

Il est donc judicieux de s’assurer qu’il n’ya pas eu d’erreurs / d’exceptions lors d’une précédente tentative d’instanciation de la classe avant de tenter un dépannage de NoClassDefFoundError.

Si vous utilisez Eclipse, essayez Project> clean, puis essayez de redémarrer le serveur.

Pour moi, le problème était que j’avais configuré un autre dossier sous “Configurations d’exécution” qui contenait une classe sans les dernières modifications. Une fois que je l’ai enlevé renvoyé dans le bon dossier bin, il a commencé à fonctionner. J’espère que ça aide quelqu’un.

PAR ABDULHAYEE:

NoClassDefFoundError en Java est fourni lorsque Java Virtual Machine n’est pas en mesure de trouver une classe particulière à l’exécution, qui était disponible au moment de la compilation. Par exemple, si nous avons un appel de méthode à partir d’une classe ou si nous accédons à un membre statique d’une classe et que cette classe n’est pas disponible au moment de l’exécution, la machine virtuelle Java lancera NoClassDefFoundError. Il est important de comprendre que cela diffère de ClassNotFoundException qui survient lors de la tentative de chargement d’une classe uniquement au moment de l’exécution et que le nom a été fourni lors de l’exécution, pas au moment de la compilation. De nombreux développeurs Java mélangent ces deux erreurs et sont confus.

En résumé, NoClassDefFoundError apparaîtra si une classe était présente au moment de la compilation, mais pas dans le classpath de Java lors de l’exécution. Normalement, vous verrez la ligne ci-dessous dans le journal lorsque vous obtenez NoClassDefFoundError: Exception dans le thread “main” java.lang.NoClassDefFoundError Exception dans le thread “main” indique simplement que son thread “main” qui n’est pas capable de trouver une classe particulière n’importe quel fil alors ne vous inquiétez pas. La différence entre cette erreur qui arrive dans le thread principal et les autres threads est que whenException dans le thread “main” arrive que le programme plante ou se ferme automatiquement, par opposition à un autre thread auquel cas votre programme continuera à fonctionner.

En savoir plus: http://javarevisited.blogspot.com/2011/06/noclassdeffounderror-exception-in.html#ixzz2jr35SsaZ