Java.lang.noclassdeffounderror [Résolu/Fermé]

- - Dernière réponse :  zobbi_la_mouche - 15 déc. 2012 à 14:18
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
Afficher la suite 

20/35 réponses

Meilleure réponse
50
Merci
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.

Dire « Merci » 50

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64146 internautes nous ont dit merci ce mois-ci

-
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 ...
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
merci steph de nantes, ta solution fonctionne
enlever le package dans vos classes
merci StephDeNantes j'ai failli craquer mentalement sans ta solution
-
Enlever les packages ?! Aie Aie aie, tout sauf une solution.
Faites plutôt un fichier ant pour builder votre projet, avec un manifest correct.
13
Merci
Essayez d'executer "java programme" plutôt que "java programme.class"
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
> Ahmed -
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_
Messages postés
1
Date d'inscription
lundi 17 décembre 2007
Statut
Membre
Dernière intervention
8 décembre 2009
-
Cette solution a bien marché pour moi : Exécuter java monprog au lieu de java monprog.class
c'est à cause de l'entete "package X" dans votre fichier *.java
se placer dans le repèrtoir parent de celui de X
exécuter : java X / "votre fichier class sans '.class' "
4
Merci
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
Messages postés
59
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
24 décembre 2002
5 -
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!!
3
Merci
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... ;)
3
Merci
J'ai codé sous netbeans, puis j'ai voulu "compiler" à la main, j'ai eu cette erreur.

En enlevant la ligne de "package", ça a enlevé le problème. Si ça peut aider..
Messages postés
59
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
24 décembre 2002
5
2
Merci
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!!!
2
Merci
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
1
Merci
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 ...
1
Merci
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 ...
1
Merci
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.
Messages postés
4100
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
2 septembre 2013
825
1
Merci
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.
1
Merci
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.
1
Merci
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
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
0
Merci
... et le JDK c'est quoi ?
0
Merci
... et le JDK c'est quoi ?
0
Merci
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 ;-)
0
Merci
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
0
Merci
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 !
0
Merci
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
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
0
Merci
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.