Exception in thread "main" java.lang.NoClassD

BBrunes Messages postés 104 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

J'ai un mal fou avec java. Je n'arrive à exécuter aucun programme.
Je prend à titre d'exemple le programme helloworld.java dans d:\prgm. (mais ça marche pas non plus pour tout les autres programmes.)
La machine virtuelle (java tapé à l'invite du Dos suivi du nom de la class générée par javac) me ressort tout le temp le message

exception in thread "main" java.lang.NoClassDefFoundError: helloworld(wrong name : helloworld
at java.lang.classLoader.defineClass1(Native Method)
at java.lang.classLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(unknown Source)
at java.net.URLClassLoader.access$000(unknown Source)
at java.net.URLClassLoader$1.run(unknown Source)
at java.security.AccessController.doPrivilged(Native Method)
at at java.net.URLClassLoader.findClass(unknown Source)
at java.net.URLClassLoader.LoadClass(unknown Source)
at sun.miscLauncher$AppClassLoader.loadClass(unknown Source)
at java.lang.classLoader.loadClass(unknown Source)
at java.lang.classLoader.loadClassInternal(unknown Source)


Il va de soit que je me positione au départ dans le répertoire où se trouvent mon fichier java et class.
j'ai essayer toutes les solutions que j'ai rencotré :
préciser le classpath (mon répertoire d:\prgm, puis le répertoire de la machine virtuelle...etc
l'option -cp
l'option -classpath
j'ai même essayer avec des fichiers inéxistant (m***.class) rien n'y fait.
autre choses enfin : j'ai essayer sur une disaine de machine différentes avec XP ou vista...pareille toujours :(

Votre aide est plus que bien venue SOS.... je perd la tête.

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Normalement les noms de classes en Java commencent par une majuscule, tu devrais donc au pire avoir une erreur java.lang.NoClassDefFoundError: Helloworld
Même si la casse n'est pas importante pour Windows, elle l'est pour Java.
Vérifies donc que tu utilises bien java Helloworld
De plus ça ne marchera que si la classe où est la méthode main s'appelle effectivement Helloworld, qu'elle est public, et s'utilise sans package.
0