Les Allergies
Alimentaires
Posez votre question Signaler

Java.lang.noclassdeffounderror [Résolu]

Véronique - Dernière réponse le 3 mai 2012 à 20:06
Bonjour,

J'ai un problème à chaque fois que j'execute un programme Java en ligne de commandes : j'obtiens Java.lang.noclassdeffounderror ...
Qelqu'un a-t-il une solution,
merci d'avance
Véronique
Lire la suite 

Java.lang.noclassdeffounderror »

52 réponses
Réponse
+33
moins plus
Salut il m'est arrivé ce meme probleme quand j'étais debutant en java il ya 4 ans de cela.J'ai regardé toutes les reponses données mais j'ai vu personne qui a noté cette maniere d'exécution ce qui peux aider un débutant en Java.Voila La solution la plus simple et d'executer tes programmes ceci :
-javac monprogramme.java
-java -cp le_chemin_de_ma_class monprogramme
où monprogramme.java est le nom de ton programme java et
le_chemin_de_ma_class est le repertoire où se trouve le fichier .class apres compilation par javac.
EXEMPLE:
j'ai un fichier bjr.java comme ceci:
c:\projetjava\bjr.java pour le compiler je fais:
1-je me place dans c:\projetjava
2-je tape la commande javac bjr.java
3-puis s'il y a pas d'erreur je tape la commande java -cp bjr lorsque java bjr ne marche pas biensur c'est à dire java ne sait où se trouve les fichier .class... où ne reconnait pas ton classpath comme le disent bien d'autres plus haut...
Une autre chose lorsque je souhaite compiler et obtenir mes fichiers .class dans un autre fichier que c:\projetjava par exemple je souhaite obtenir mes fichiers .class dans c:\projetjava\class
il faut faire ceci:
1-javac -d class *.java (pour compiler tous mes fichiers .java sinon le nom_de_mon_fichier.java seleument)
2-java -cp class mon_fichier_principal
si par exemple le fichier class se trouve dans c:\class je dois préciser le nom complet du repertoire depuis sa racine...
Voila je pense que ce petit tutoriel va aider les debutants comme cela ils ne poseront plus cette question sur le forum.

PS:la notion de classpath expliqué tout au debut n'aide guerre un débutant car quand une personne se dit débutant c'est que cette personne ne sait rien du tout je suis passé par la et je me suis dit à un moment quand j'étais débutant que ce site ne sert à rien alors qu'il sert à beaucoup de choses il m'a beaucoup aidé losrque j'étais devenu moyen en progammation...Alors mes amis soyons plus sympas avec les débutants merci.
StephDeNantes - 15 oct. 2011 à 17:15
je déterre un peu mais si ça peut aider (vu le nombre de personne concernées) ;-)
je travaille avec Eclipse et j'ai voulu compiler en ligne de commande...
dans le fichier java (extension .java), j'ai supprimé la ligne "package lanceur;"
j'ai ensuite compilé le fichier avec la commande javac puis exécuté à nouveau le programme
sans problèmes ...
JB - 10 janv. 2012 à 09:10
Ray-J a raison sur le fond, c'est un problème avec les sources sur le disque le mieux c'est de créer un nouveau projet propre et vierge et d'y importer les sources de l'ancien projet
woospy - 3 mai 2012 à 20:06
merci steph de nantes, ta solution fonctionne
enlever le package dans vos classes
Ajouter un commentaire
Réponse
+7
moins plus
Essayez d'executer "java programme" plutôt que "java programme.class"
Ahmed - 6 déc. 2006 à 15:58
je vous tous conseiller d'etuliser le NetBeans IDE parce que c'est le seule qui execute si on tombe dans desz problem comme sa,
telechrger le ... avec NetBens il n ya aucun problem d'execution..
merci
debutant123 - 21 févr. 2009 à 23:09
slt
bas moi j'ai netbeans, et ça change rien, il m'écrit:

Exception in thread "main" java.lang.NoClassDefFoundError: IHM/MainWindow
at lance.Main.main(Main.java:55)
Caused by: java.lang.ClassNotFoundException: IHM.MainWindow
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:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
Java Result: 1
_DetH_- 8 déc. 2009 à 23:57
Cette solution a bien marché pour moi : Exécuter java monprog au lieu de java monprog.class
Ajouter un commentaire
Réponse
+4
moins plus
ma question (...et le JDK c'est quoi ?) était ironique ...

Par contre merci pour la précision concernant le CLASSPATH, je n'étais effectivement pas sure de devoir tous les mettre.

Sinon, à l'intention de Freeman, j'ai désinstallé Tomcat de program Files pour le mettre à la racine c:\ ; actualisé les variables d'environnement en fonction et maintenant tout marche !...

Encore un des mystères de Windows ...
maynouch- 24 janv. 2002 à 16:22
personnellement, à part les produits M$, je n'installe rien sur Program Files!!
LA meilleure solution est de faire une partition système où windaube peut déconner comme il veut, et une autre dans laquelle on installe tous les logiciels intéressants!!
Ajouter un commentaire
Réponse
+1
moins plus
j'ai la JDK1.3.1 et windows XP,

En fait c 'est très bizarre : j'ai fermé toutes mes applications, rejeté un oeil sur mes variables d'environnement et classpath pour voir si une erreur ne s'y était pas glissée, rien changé (!) et maintenant cela fonctionne ...!?
Pour info mon classpath pointe sur %TOMCAT_HOME%\common\lib\servlet.jar;%TOMCAT_HOME%\common\lib\xerces.jar;%TOMCAT_HOME%\common\lib\tools.jar;
Je ne suis d'ailleurs pas sur qu'il faille préciser tous les .jar ?

Si vous avez des précisions à apporter ...
Ajouter un commentaire
Réponse
+1
moins plus
le JDK t'offre les outils de développement : javac (pour compiler), le debugger ...
qd tu l'installes, il installe automatiquement le java runtime environment càd la JVM.
Pour Tomcat, tu dois créer les variables d'environnement :
TOMCAT_HOME, JAVA_HOME
et CLASSPATH qui contien le path vers :
Tomcat\lib\webserver.jar;
Tomcat\lib\ant.jar;
Tomcat\lib\jasper.jar;
Tomcat\lib\jaxp.jar;
Tomcat\lib\parser.jar;
Tomcat\lib\servlet.jar;
ça c le max de jar ;-)
tu n'as peut etre pas besoin de tout ça, mais il vaut mieux les mettre une fois pour toute!!!
Ajouter un commentaire
Réponse
+1
moins plus
dans un .bat windows attention aux guillemets :

-classpath=c:\Documents and Settings\...

donne
Exception in thread "main" java.lang.NoClassDefFoundError: and

encadrer le classpath avec des guillemets et le tour est jouer .

Sinon regarder quelle classe manque et vérifier le classpath . N'oubier pas non plus le nom du package de la classe a executer : mypackage.Test et pas Test ...
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour !

juste pour info ! Si vous changez les valeurs de vos CLASSPATH dans les variables d'environnement, refermez vos fenetre de commande et réouvrez les pke les variables nouvellement modifiées prennent effet.

Ceci pourrait expliker pkoi malgré les efforts de certains, ils ne reussissent pas à excécuter un programme apparemment correct.
Ajouter un commentaire
Réponse
+1
moins plus
Autre possibilité (j'ai pas tout lu), si l'erreur noclassdeffound intervient sur une classe du projet, peut etre le répertoire qui contient les packages n'est il pas déclaré comme répertoire source du projet... auquel cas il ne trouve pas certaines classes lors de la compilation.
Ajouter un commentaire
Réponse
+1
moins plus
C'est bon, j'ai trouver :)
Il faut rajouter le répertoire courant dans le CLASSPATH, soit : .
Ce qui donne donc : répertoire_java;.

Si ça peux aider certains.
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour à tous, je suis programmeur java depuis déjà quelque années. J'ai rencontré le même problème que plusieurs personne cité ci-dessus. Voila la cause de mon problème:

J'utilise Netbeans comme environnement et j'ai une classe qui se nommait :
Terre120x200.java

Le nom de la classe occasionnais l'exeption cité ci-dessus. Peut-être y a t'il un problème lié directement avec certains nom de classe dans vos cas. Après avoir modifié le nom de la classe qui était introuvable par Terre200.java, je n'es plus eu cette exception.

J'espère que ma réponse vous aidera!

Au plaisir

Sébastien
Ajouter un commentaire
Réponse
+0
moins plus
il faut ajouter un CLASSPATHqui spécifie ou se trouve tes classes java.
Véronique - 24 janv. 2002 à 13:38
Non, non, tout ça c'est correct : variable système JAVA_HOME c:\jdk1.3.1 et CLASSPATH pointe là ou il faut ...

d'autant plus que même avec un "hello World" qui ne fait appel à aucun package extèieur cela coince ?...
cedrico - 24 janv. 2002 à 13:52
quel est le message exactement??
Ajouter un commentaire
Réponse
+0
moins plus
... et le JDK c'est quoi ?
Ajouter un commentaire
Réponse
+0
moins plus
... et le JDK c'est quoi ?
Ajouter un commentaire
Réponse
+0
moins plus
bonjour,
moi j'ai le mème problème :

java.lang.NoClassDefFoundError: ....
Exception in thread "main"

j'ai lu là les réponses qui ont été postées, mais j'ai pa bien compris quesque je doit rajouter au juste dans mon claspath.
Excusez moi je suis débutante ;-)
Ajouter un commentaire
Réponse
+0
moins plus
salut a tous! moi il m'est arrivé la meme chose avec le message d'erreur suivant:java.lang.NoClassDefFoundError Exception in thread "main" seulement voila je ne sais ni ce qu'est un classpath ni Tomcat ni quoi que ce soit...autant dir que je sui un néophyte dans toute sa splendeur!SVP aidez moi( avec des termes compréhensibles pour une personne de mon espèce).merci de me répondre
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour à tous,
Je suis en train de faire un fichier run.bat mais j'ai des soucis lors de son execution :

@set classpath=.;.\lib\commons-httpclient-3.1.jar;.\lib\commons-logging-1.1.jar;.\lib\commons-codec-1.3.jar
@"%java_home%\bin\java" -cp %classpath% com.service.outils.http.HttpClient requeteGenererSOAP.xml http://localhost:8080/services/GenererExport soap
@pause



mon run.bat se trouve dans le fichier "classes" (classes contient le package "com.service....")
Mon fichier HttpClient se trouve dans le package :com.service.outils.http.

Mon message d'erreur est :
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity
Pourtant je n'ai pas besoin de faire l'import dans ma classe de RequestEntity !

Merci pour votre aide !
Ajouter un commentaire
Réponse
+0
moins plus
Votre probleme vient de la variable CLASSPATH qui est certainement mal initialisée (contient le .)

Soit le programme mini suivant :

import java.io.*;
import java.net.*;
public class mini
{
public static void main(String[] arguments)
{
String LeTexte = "Hello World";
System.out.println(LeTexte);
}
}

Avec un CLASSPATH mal renseigne.

C:\PYC.Develop\Java\Learning\INIT>echo %CLASSPATH%
.:C:\Program Files (other)\EasyEclipse Expert Java 1.3.0\Junit/junit-4.4.jar

C:\PYC.Develop\Java\Learning\INIT>javac mini.java

C:\PYC.Develop\Java\Learning\INIT>java mini
Exception in thread "main" java.lang.NoClassDefFoundError: mini

C:\PYC.Develop\Java\Learning\INIT>set CLASSPATH=

C:\PYC.Develop\Java\Learning\INIT>java mini
Hello World

ET voila ca marche
Olivier_33 - 7 mars 2008 à 17:01
C:\PYC.Develop\Java\Learning\INIT>javac mini.java

C:\PYC.Develop\Java\Learning\INIT>java mini
Exception in thread "main" java.lang.NoClassDefFoundError: mini

C:\PYC.Develop\Java\Learning\INIT>java cp "." mini ----> Ca marche aussi
Ajouter un commentaire
Réponse
+0
moins plus
salut
mois aussi j'ai le même problème mais je sais pas ce que je doit faire pour configurer mes variables d'environnement ce que je doit y mètre car je suis débutante . en faite j'utilise éclipse comme environnement de développement et je lance l'exécution appartire de la ligne de commande comment je doit faire
pasantoi - 8 nov. 2008 à 06:25
Salut j'ai eu le meme probleme, le message Java.lang.noclassdeffounderror.
J'ai resolu mon probleme.
J'explique mon cas.
j'ai installer le SDK qui m'a automatiquement installer les JDK. Donc l'application javac et java sont dans c:\sun\sdk\jdk\bin
Le programme que j'ai ecris Banque.java, lui se trouve dans d:\
J'avais pas de probleme pour le compiler avec javac mais impossible de l'executer avec la commande java.

J'ai ete voir mon "path" (en allant dans panneau de configuration -> system -> avancee -> variable d'envirronnement) et la je vois que mon path = c:\sun\sdk\jdk\bin

J'ouvre donc le terminal de commande.
je suis sur c:\Documents and Settings\moi>
Je tape cd ..
je recommence la commande cd .. jusqu'a ce que je me retrouve sur C:\
une fois sur c:\ je tape D:
je me retrove donc sur D:\
et la je tape java Banque
plus de probleme
Donc en resume votre path doit avoir comme valeur le chemin ou se trouve le compilateur javac et l'executeur java.
Ensuite dans le terminal, vous vous placez la ou se trouve votre fichier a compiler et a executer. Et normalement ca passe. En tout cas ca a fonctionnee pour moi.

PS: desolee pour les accents mais j'ai un clavier QWERTY
Ajouter un commentaire
Réponse
+0
moins plus
j'avais aussi trouvé une solution qui marchait, c'est-à-dire, dans mon cas, je supprimais tous les avertissement dans mon code, vous savez ceux symbolisé par un panneau jaune triangulaire dans toutes mes classes pour avoir un projet "propre" (supprimer les importations inutiles, les méthodes et les variables non utilisées, ...)
Et une fois l'exportation en .jar faite, ça fonctionnait !

Certains diront qu'il fallait décocher l'option "compiler malgré les avertissements" mais justement cette action n'avait aucun résultat satisfaisant.
Ajouter un commentaire
Réponse
+0
moins plus
Juste pour dire, concernant les réflexion sur Windows plus haut, je suis sous Ubuntu, et j'ai eu exactement la même erreur..
Soyons réalistes de temps en temps, les gens, on peut pas blâmer Windows à tous les coups, là c'est juste nous qui sommes nuls... ;)
Ajouter un commentaire
Ce document intitulé « Java.lang.noclassdeffounderror » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Java.lang.noclassdeffounderror - page 2