OVH Cloud OVH Cloud

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

10 réponses
Avatar
tom_dupont
Bonjour,

J'essaie de me mettre au Java en grand d=E9butant.

Lorsque j'essai le 1er exemple de mon livre Java2 de Tout en poche.

Il compile sans erreur.
Ensuite quand je lance le programme.
J'obtiens l'erreur : Exception in thread "main"
java.lang.NoClassDefFoundError : Saluton

Voici le code de cet exemple. Quel est le probl=E8me ??

class Saluton {
public static void main(String[] arguments) {
String greeting =3D "Saluton mondo!";
System.out.println(greeting);
}
}


Merci de votre aide.

Tom

10 réponses

Avatar
Asgeir

Lorsque j'essai le 1er exemple de mon livre Java2 de Tout en poche.

Il compile sans erreur.
Ensuite quand je lance le programme.
J'obtiens l'erreur : Exception in thread "main"
java.lang.NoClassDefFoundError : Saluton



Il te faut configurer les variables d'environnement de ton os. La
configuration du jdk que ça s'appelle.
Google est ton ami, c'est expliqué un peu partout sur le web.

Avatar
damien guerin
Ta sortie d'erreur est explicite non??
Java ne trouve pas ta classe Saluton.
Voit où se trouve Saluton.class et lance par java Saluton (dans le
répertoire de Saluton.class) !

Voilà.

PS: Si ton exécution est à partir d'un IDE, tu dois un probleme de
configuration mais pour te répondre il nous manque des billes.
Avatar
Fabien Bergeret
wrote:
Bonjour,

J'essaie de me mettre au Java en grand débutant.

Lorsque j'essai le 1er exemple de mon livre Java2 de Tout en poche.

Il compile sans erreur.
Ensuite quand je lance le programme.
J'obtiens l'erreur : Exception in thread "main"
java.lang.NoClassDefFoundError : Saluton

Voici le code de cet exemple. Quel est le problème ??

class Saluton {
public static void main(String[] arguments) {
String greeting = "Saluton mondo!";
System.out.println(greeting);
}
}


Merci de votre aide.

Tom

Bonan tagon !


L'endroit où est ton fichier class n'est pas référencé par la variable
CLASSPATH.
Solution 1 :
positionner la variable d'environnement CLASSPATH vers le répertoire
contenant le fichier class
Solution 2 :
lancer java -classpath cheminVersLeRepertoireContenantLeFichierClass
Saluton

Avatar
damien guerin
Solution 3 : Ce que j'ai dit !
Avatar
tom_dupont
Personellement je n'ai pas trouvé que l'erreur était très explicite.
Autrement, je n'aurai pas posté ce mail. J'envoyais simplement java
Saluton dans le répertoire contenant la class et le code.

Finallement, j'ai trouvé la solution. Le classpath par défaut
n'était pas correcte. Pourtant le sdk avait été réinstallé 5 min
avant et pc rebooter. J'ai viré le reste d'une installaion
précédente coincé dans le registre à classpath et mis un .

Maintenant ca fonctionne. Tant mieux.


Merci et au revoir

Tom
Avatar
Fabien Bergeret
damien guerin wrote:
Solution 3 : Ce que j'ai dit !

Désolé, mais ta solution ne fonctionne que si le répertoire courant est

dans le CLASSPATH. A moins d'avoir CLASSPATH=., ta solution ne
fonctionne pas

Avatar
Pierre Crescenzo
Bonjour,

Désolé, mais ta solution ne fonctionne que si le répertoire courant
est dans le CLASSPATH. A moins d'avoir CLASSPATH=., ta solution ne
fonctionne pas


En fait, cela dépend des systèmes (en fait des portages de compilateur,
je suppose), des compilateurs, voire des versions de compilateur...

A+

[CITATION ALÉATOIRE : La prévision est difficile surtout lorsqu'elle
concerne l'avenir. Pierre Dac]

--
Pierre Crescenzo
mailto:
http://www.crescenzo.nom.fr/

Avatar
damien guerin
Mais bien sur...!

Fais le test.
Avatar
Fabien Bergeret
damien guerin wrote:
Mais bien sur...!

Fais le test.

J'ai testé, avec Windows, J2DSK 1.3 et 1.4, et avec AIX et J2DSK 1.4 :

effectivement, avec ces trois environnements, ca marche.

Neanmoins, j'ai déjà été confronté au problème, et je suis certain qu'il
existe des combinaisons OS/version de Java pour lesquelles ca ne
fonctionne pas.

Avatar
damien guerin
Moi non, mais si tu le dis, c'est que ça doit être vrai ;)