Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreurs à l'exécution

13 réponses
Avatar
Anonyme
Bonjour à tous,
je m'initie à Java avec le livre "Programmer en Java" (éd Eyrolles).
J'ai téléchargé les exemples du livre et les ai tous regroupés dans le même répertoire, pour simplifier. J'essaie ce petit programme (en mode console MS DOS):

public class PremProg
//genes\PremProg.java
{ public static void main (String[] args)
{ System.out.println ("Mon premier programme Java") ;
}
}
Pas d'erreur de compilation mais à l'exécution, j'ai la série de messages suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
Caused by: java.lang.ClassNotFoundException: PremProg
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)
Could not find the main class: PremProg. Program will exit.

Pouvez-vous m'indiquer ce qui cause ces erreurs?
Cordialement,
Michel

10 réponses

1 2
Avatar
Samuel DEVULDER
Le 16/02/2012 00:23, mimidu74 a écrit :

Pas d'erreur de compilation mais à l'exécution, j'ai la série de messages
suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
Caused by: java.lang.ClassNotFoundException: PremProg
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)
Could not find the main class: PremProg. Program will exit.

Pouvez-vous m'indiquer ce qui cause ces erreurs?



Tu as oublié de nous indiquer la ligne de commande que tu a utilisé.
As tu fait sous dos:

java PremProg
ou
java -classpath . PremProg

Vois tu le fichier PremProg.class dans le dossier courant? N'y a t-il
pas un problème de minuscule/majuscule dans le nom du fichier?

sam.
Avatar
Anonyme
Samuel DEVULDER a écrit le 16/02/2012 à 08h38 :
Le 16/02/2012 00:23, mimidu74 a écrit :

Pas d'erreur de compilation mais à l'exécution, j'ai la
série de messages
suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
Caused by: java.lang.ClassNotFoundException: PremProg
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)
Could not find the main class: PremProg. Program will exit.

Pouvez-vous m'indiquer ce qui cause ces erreurs?




Tu as oublié de nous indiquer la ligne de commande que tu a
utilisé.
As tu fait sous dos:

java PremProg
ou
java -classpath . PremProg

Vois tu le fichier PremProg.class dans le dossier courant? N'y a t-il
pas un problème de minuscule/majuscule dans le nom du fichier?

sam.


Bonjour Samuel,
- oui, le fichier PremProg.class existe bien;
- non, pas de problème majuscule/minuscule;
- je lance par java PremProg;
Quelle est l'utilité de l'option -classpath?

Cordialement,
Michel
Avatar
Yliur
Le Thu, 16 Feb 2012 05:16:50 -0600
mimidu74 a écrit :

Samuel DEVULDER a écrit le 16/02/2012 à 08h38 :
> Le 16/02/2012 00:23, mimidu74 a écrit :
>
>> Pas d'erreur de compilation mais à l'exécution, j'ai la
>> série de messages
>> suivante:
>> Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
>> Caused by: java.lang.ClassNotFoundException: PremProg
>> 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)
>> Could not find the main class: PremProg. Program will exit.
>>
>> Pouvez-vous m'indiquer ce qui cause ces erreurs?
>>
>>
> Tu as oublié de nous indiquer la ligne de commande que tu a
> utilisé.
> As tu fait sous dos:
>
> java PremProg
> ou
> java -classpath . PremProg
>
> Vois tu le fichier PremProg.class dans le dossier courant? N'y a
> t-il pas un problème de minuscule/majuscule dans le nom du fichier?
>
> sam.
Bonjour Samuel,
- oui, le fichier PremProg.class existe bien;
- non, pas de problème majuscule/minuscule;
- je lance par java PremProg;
Quelle est l'utilité de l'option -classpath?

Cordialement,
Michel



Bonjour

-classpath sert à indiquer les répertoires dans lesquels aller chercher
les classes compilées. En principe le répertoire courant (.) fait
automatiquement partie de cette liste (mais tu peux toujours essayer
avec l'option...). Note : quand des bibliothèques sont utilisées sous
forme d'archives jar, elles doivent aussi être désignées comme des
endroits où des classes sont disponibles, mais tu verras ça plus
tard :) .

Le commentaire de l'exemple initial semble indiquer que le fichier
contenant le programme est stocké dans un répertoire "genes", c'est
bien ça ?

Est-ce que la commande de lancement est bien exécutée depuis l'intérieur
du répertoire ? Qu'affiche la commande "dir" ?

Pour la compilation, ça devrait ressembler à ça :
javac PremProg.java

Pour le lancement :
java PremProg

Le tout depuis le répertoire contenant le fichier source. Attention,
la compilation peut être lancée depuis l'extérieur de cette manière :
javac genesPremProg.java et va fonctionner, mais pas le lancement de
l'application (java genesPremProg ne va pas fonctionner).

Est-ce que tout le code du fichier se trouve bien dans le message
d'origine ? Il n'y a rien d'autres, pas de déclarations de
paquetages, ... ?
Avatar
Anonyme
Yliur a écrit le 16/02/2012 à 18h48 :
Le Thu, 16 Feb 2012 05:16:50 -0600
mimidu74 a écrit :

Samuel DEVULDER a écrit le 16/02/2012 à 08h38 :
> Le 16/02/2012 00:23, mimidu74 a écrit :
>
>> Pas d'erreur de compilation mais à l'exécution, j'ai la
>> série de messages
>> suivante:
>> Exception in thread "main" java.lang.NoClassDefFoundError:
PremProg
>> Caused by: java.lang.ClassNotFoundException: PremProg
>> 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)
>> Could not find the main class: PremProg. Program will exit.
>>
>> Pouvez-vous m'indiquer ce qui cause ces erreurs?
>>
>>
> Tu as oublié de nous indiquer la ligne de commande que tu a
> utilisé.
> As tu fait sous dos:
>
> java PremProg
> ou
> java -classpath . PremProg
>
> Vois tu le fichier PremProg.class dans le dossier courant? N'y a
> t-il pas un problème de minuscule/majuscule dans le nom du
fichier?
>
> sam.
Bonjour Samuel,
- oui, le fichier PremProg.class existe bien;
- non, pas de problème majuscule/minuscule;
- je lance par java PremProg;
Quelle est l'utilité de l'option -classpath?

Cordialement,
Michel




Bonjour

-classpath sert à indiquer les répertoires dans lesquels aller
chercher
les classes compilées. En principe le répertoire courant (.) fait
automatiquement partie de cette liste (mais tu peux toujours essayer
avec l'option...). Note : quand des bibliothèques sont utilisées
sous
forme d'archives jar, elles doivent aussi être désignées
comme des
endroits où des classes sont disponibles, mais tu verras ça plus
tard :) .

Le commentaire de l'exemple initial semble indiquer que le fichier
contenant le programme est stocké dans un répertoire
"genes", c'est
bien ça ?

Est-ce que la commande de lancement est bien exécutée depuis
l'intérieur
du répertoire ? Qu'affiche la commande "dir" ?

Pour la compilation, ça devrait ressembler à ça :
javac PremProg.java

Pour le lancement :
java PremProg

Le tout depuis le répertoire contenant le fichier source. Attention,
la compilation peut être lancée depuis l'extérieur de cette
manière :
javac genesPremProg.java et va fonctionner, mais pas le lancement de
l'application (java genesPremProg ne va pas fonctionner).

Est-ce que tout le code du fichier se trouve bien dans le message
d'origine ? Il n'y a rien d'autres, pas de déclarations de
paquetages, ... ?


Bonsoir Yliur,
- classpath: compris, pas besoin pour l'instant.
- par facilité, tous les fichiers-exemples se trouvent dans le même répertoire et le raccourci de cmd.exe indique ce même répertoire;
- la commande dir affiche tous les fichiers sources et les .class compilées;
- je compile par javac Premprog.java
et je lance par java PremProg;
- commentaire //genes/... : je pense qu'il indique un répertoire de l'auteur; aucune utilité dans mon cas, sa suppression ne change rien au résultat;
- non, pas d'autres lignes de code, tout est là (c'est un programme pour débutants...);
- je précise que le jdk 1.6.31 est bien paramétré dan la variable d'environnement PATH (ainsi que dans les autres applications qui utilisent java);
En attendant, merci de vos réponses.

Cordialement,
Michel
Avatar
Yliur
Le Thu, 16 Feb 2012 16:16:56 -0600
mimidu74 a écrit :

Yliur a écrit le 16/02/2012 à 18h48 :
> Le Thu, 16 Feb 2012 05:16:50 -0600
> mimidu74 a écrit :
>
>> Samuel DEVULDER a écrit le 16/02/2012 à 08h38 :
>> > Le 16/02/2012 00:23, mimidu74 a écrit :
>> >
>> >> Pas d'erreur de compilation mais à l'exécution, j'ai la
>> >> série de messages
>> >> suivante:
>> >> Exception in thread "main" java.lang.NoClassDefFoundError:
>> PremProg
>> >> Caused by: java.lang.ClassNotFoundException: PremProg
>> >> 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)
>> >> Could not find the main class: PremProg. Program will exit.
>> >>
>> >> Pouvez-vous m'indiquer ce qui cause ces erreurs?
>> >>
>> >>
>> > Tu as oublié de nous indiquer la ligne de commande que tu a
>> > utilisé.
>> > As tu fait sous dos:
>> >
>> > java PremProg
>> > ou
>> > java -classpath . PremProg
>> >
>> > Vois tu le fichier PremProg.class dans le dossier courant? N'y a
>> > t-il pas un problème de minuscule/majuscule dans le nom du
>> fichier?
>> >
>> > sam.
>> Bonjour Samuel,
>> - oui, le fichier PremProg.class existe bien;
>> - non, pas de problème majuscule/minuscule;
>> - je lance par java PremProg;
>> Quelle est l'utilité de l'option -classpath?
>>
>> Cordialement,
>> Michel
>>
>>
> Bonjour
>
> -classpath sert à indiquer les répertoires dans lesquels aller
> chercher
> les classes compilées. En principe le répertoire courant (.) fait
> automatiquement partie de cette liste (mais tu peux toujours essayer
> avec l'option...). Note : quand des bibliothèques sont utilisées
> sous
> forme d'archives jar, elles doivent aussi être désignées
> comme des
> endroits où des classes sont disponibles, mais tu verras ça plus
> tard :) .
>
> Le commentaire de l'exemple initial semble indiquer que le fichier
> contenant le programme est stocké dans un répertoire
> "genes", c'est
> bien ça ?
>
> Est-ce que la commande de lancement est bien exécutée depuis
> l'intérieur
> du répertoire ? Qu'affiche la commande "dir" ?
>
> Pour la compilation, ça devrait ressembler à ça :
> javac PremProg.java
>
> Pour le lancement :
> java PremProg
>
> Le tout depuis le répertoire contenant le fichier source. Attention,
> la compilation peut être lancée depuis l'extérieur de cette
> manière :
> javac genesPremProg.java et va fonctionner, mais pas le lancement de
> l'application (java genesPremProg ne va pas fonctionner).
>
> Est-ce que tout le code du fichier se trouve bien dans le message
> d'origine ? Il n'y a rien d'autres, pas de déclarations de
> paquetages, ... ?
Bonsoir Yliur,
- classpath: compris, pas besoin pour l'instant.
- par facilité, tous les fichiers-exemples se trouvent dans le même
répertoire et le raccourci de cmd.exe indique ce même répertoire;
- la commande dir affiche tous les fichiers sources et les .class
compilées;
- je compile par javac Premprog.java
et je lance par java PremProg;
- commentaire //genes/... : je pense qu'il indique un répertoire de
l'auteur; aucune utilité dans mon cas, sa suppression ne change rien
au résultat;
- non, pas d'autres lignes de code, tout est là (c'est un programme
pour débutants...);
- je précise que le jdk 1.6.31 est bien paramétré dan la variable
d'environnement PATH (ainsi que dans les autres applications qui
utilisent java);
En attendant, merci de vos réponses.

Cordialement,
Michel



Désolé, je ne vois pas. A part revérifier les majuscules et minuscules
(l'erreur la plus fréquente sans doute), mais sinon je ne vois pas. Ça
devrait marcher. Et avec un autre exemple dans un autre répertoire, le
problème est le même ?
Avatar
Yliur
Le Thu, 16 Feb 2012 16:16:56 -0600
mimidu74 a écrit :

- classpath: compris, pas besoin pour l'instant.



A tout hasard, essayez quand même avec java -cp . PremProg. en principe
ce n'est pas nécessaire, mais sait-on jamais...
Avatar
remy
Le 16/02/2012 00:23, mimidu74 a écrit :
Bonjour à tous,
je m'initie à Java avec le livre "Programmer en Java" (éd Eyrolles) .
J'ai téléchargé les exemples du livre et les ai tous regroupés dans le même
répertoire, pour simplifier. J'essaie ce petit programme (en mode con sole MS
DOS):

public class PremProg
//genesPremProg.java
{ public static void main (String[] args)
{ System.out.println ("Mon premier programme Java") ;
}
}
Pas d'erreur de compilation mais à l'exécution, j'ai la série de messages
suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
Caused by: java.lang.ClassNotFoundException: PremProg
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)
Could not find the main class: PremProg. Program will exit.

Pouvez-vous m'indiquer ce qui cause ces erreurs?



tu ne veux pas nous envoyer un ls ou dir histoire de

remy

--
http://remyaumeunier.chez-alice.fr/
Avatar
remy
Le 17/02/2012 12:29, remy a écrit :
Le 16/02/2012 00:23, mimidu74 a écrit :
Bonjour à tous,
je m'initie à Java avec le livre "Programmer en Java" (éd Eyrolles ).
J'ai téléchargé les exemples du livre et les ai tous regroupés dans le
même
répertoire, pour simplifier. J'essaie ce petit programme (en mode
console MS
DOS):

public class PremProg
//genesPremProg.java
{ public static void main (String[] args)
{ System.out.println ("Mon premier programme Java") ;
}
}
Pas d'erreur de compilation mais à l'exécution, j'ai la série de messages
suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
Caused by: java.lang.ClassNotFoundException: PremProg
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)
Could not find the main class: PremProg. Program will exit.

Pouvez-vous m'indiquer ce qui cause ces erreurs?



tu ne veux pas nous envoyer un ls ou dir histoire de




il faut écrire
java PremProg
et pas
java PremProg.java ou java PremProg.class

remy


remy





--
http://remyaumeunier.chez-alice.fr/
Avatar
Anonyme
remy a écrit le 17/02/2012 à 14h52 :
Le 17/02/2012 12:29, remy a écrit :
Le 16/02/2012 00:23, mimidu74 a écrit :
Bonjour à tous,
je m'initie à Java avec le livre "Programmer en Java"
(éd Eyrolles ).
J'ai téléchargé les exemples du livre et les ai tous
regroupés dans le
même
répertoire, pour simplifier. J'essaie ce petit programme (en mode
console MS
DOS):

public class PremProg
//genesPremProg.java
{ public static void main (String[] args)
{ System.out.println ("Mon premier programme Java") ;
}
}
Pas d'erreur de compilation mais à l'exécution, j'ai la
série de messages
suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: PremProg
Caused by: java.lang.ClassNotFoundException: PremProg
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)
Could not find the main class: PremProg. Program will exit.

Pouvez-vous m'indiquer ce qui cause ces erreurs?




tu ne veux pas nous envoyer un ls ou dir histoire de





il faut écrire
java PremProg
et pas
java PremProg.java ou java PremProg.class

remy


remy






--
http://remyaumeunier.chez-alice.fr/


Bonjour à tous,
après quelques recherches sur GNT, j'ai trouvé la solution: il me fallait aussi paramétrer la variable ClassPath avec le chemin d'accès au répertoire contenant les fichiers programmes.
Ça marche mieux maintenant! Je vais pouvoir avancer.
Merci à tous ceux qui se sont penchés sur mon problème.
Cordialement,

Michel
Avatar
Yliur
Le Sat, 18 Feb 2012 17:47:24 -0600
mimidu74 a écrit :

remy a écrit le 17/02/2012 à 14h52 :
> Le 17/02/2012 12:29, remy a écrit :
>> Le 16/02/2012 00:23, mimidu74 a écrit :
>>> Bonjour à tous,
>>> je m'initie à Java avec le livre "Programmer en Java"
>>> (éd Eyrolles ).
>>> J'ai téléchargé les exemples du livre et les ai tous
>>> regroupés dans le
>>> même
>>> répertoire, pour simplifier. J'essaie ce petit programme (en mode
>>> console MS
>>> DOS):
>>>
>>> public class PremProg
>>> //genesPremProg.java
>>> { public static void main (String[] args)
>>> { System.out.println ("Mon premier programme Java") ;
>>> }
>>> }
>>> Pas d'erreur de compilation mais à l'exécution, j'ai la
>>> série de messages
>>> suivante:
>>> Exception in thread "main" java.lang.NoClassDefFoundError:
>>> PremProg Caused by: java.lang.ClassNotFoundException: PremProg
>>> 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)
>>> Could not find the main class: PremProg. Program will exit.
>>>
>>> Pouvez-vous m'indiquer ce qui cause ces erreurs?
>>>
>>
>> tu ne veux pas nous envoyer un ls ou dir histoire de
>>
>>
>>
> il faut écrire
> java PremProg
> et pas
> java PremProg.java ou java PremProg.class
>
> remy
>
>
>> remy
>>
>>
>>
>>
> --
> http://remyaumeunier.chez-alice.fr/
Bonjour à tous,
après quelques recherches sur GNT, j'ai trouvé la solution: il me
fallait aussi paramétrer la variable ClassPath avec le chemin d'accès
au répertoire contenant les fichiers programmes.
Ça marche mieux maintenant! Je vais pouvoir avancer.
Merci à tous ceux qui se sont penchés sur mon problème.
Cordialement,

Michel



Une variable d'environnement ? Ou une option de la cligne de commande ?
Et dans ce deuxième cas, ça ne marchait pas avec "java -cp . PremProg" ?
1 2