Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

erreurs à l'exécution

12 views
Skip to first unread message

mimidu74

unread,
Feb 15, 2012, 6:23:50 PM2/15/12
to
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

Samuel DEVULDER

unread,
Feb 16, 2012, 2:38:39 AM2/16/12
to
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.

mimidu74

unread,
Feb 16, 2012, 6:16:50 AM2/16/12
to
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

Yliur

unread,
Feb 16, 2012, 12:48:04 PM2/16/12
to
Le Thu, 16 Feb 2012 05:16:50 -0600
mimidu74 <nospam_...@neuf.fr.invalid> a écrit :
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 genes\PremProg.java et va fonctionner, mais pas le lancement de
l'application (java genes\PremProg 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, ... ?

mimidu74

unread,
Feb 16, 2012, 5:16:56 PM2/16/12
to
Yliur a écrit le 16/02/2012 à 18h48 :
> Le Thu, 16 Feb 2012 05:16:50 -0600
> mimidu74 a écrit :
> 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

Yliur

unread,
Feb 16, 2012, 9:28:28 PM2/16/12
to
Le Thu, 16 Feb 2012 16:16:56 -0600
mimidu74 <nospam_...@neuf.fr.invalid> a écrit :
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 ?

Yliur

unread,
Feb 16, 2012, 9:30:40 PM2/16/12
to
Le Thu, 16 Feb 2012 16:16:56 -0600
mimidu74 <nospam_...@neuf.fr.invalid> 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...

remy

unread,
Feb 17, 2012, 6:29:03 AM2/17/12
to
Le 16/02/2012 00:23, mimidu74 a écrit :
tu ne veux pas nous envoyer un ls ou dir histoire de

remy

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

remy

unread,
Feb 17, 2012, 8:52:05 AM2/17/12
to
il faut écrire
java PremProg
et pas
java PremProg.java ou java PremProg.class

remy


> remy
>


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

mimidu74

unread,
Feb 18, 2012, 6:47:24 PM2/18/12
to
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

Yliur

unread,
Feb 18, 2012, 8:50:52 PM2/18/12
to
Le Sat, 18 Feb 2012 17:47:24 -0600
mimidu74 <nospam_...@neuf.fr.invalid> a écrit :
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" ?

mimidu74

unread,
Feb 19, 2012, 7:06:03 AM2/19/12
to
Yliur a écrit le 19/02/2012 à 02h50 :
> Le Sat, 18 Feb 2012 17:47:24 -0600
> mimidu74 a écrit :
Bonjour Yliur,
- option -cp: il faut indiquer à chaque fois le chemin (ce que tu ne me
précisais pas); trop long pour moi. Il existe peut-être des techniques de
raccourcis;
- variable d'environnement: oui, j'avais oublié ce détail. Il faut chercher un
peu mais le résultat est plus simple.
Je commence par les bases mais je ne cherche pas, pour l'instant, à connaître
les nombreuses options des commandes en ligne.
Cordialement,
Michel

Bertrand Usse

unread,
Feb 24, 2012, 11:59:40 AM2/24/12
to
mimidu74 wrote:

[snip]

>> 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" ?
> Bonjour Yliur,
> - option -cp: il faut indiquer à chaque fois le chemin (ce que tu ne me
> précisais pas); trop long pour moi. Il existe peut-être des techniques de
> raccourcis;

"ce que tu ne me précisais pas" => en fait si puisque "." signifie plus
ou moins "le dossier courant" mais - pour faire simple - ça ne
fonctionne qu'à partir du dossier contenant les fichiers .class à lancer.

Sinon, il faut - comme tu l'as compris - préciser le chemin complet ou
relatif en partant du dossier de travail courant.

(pour info : ".." signifie (toujours plus ou moins) "le dossier parent
du dossier courant") (je précise "plus ou moins" parce que la définition
est plus complexe que ces simples périphrases entre guillemets et de
plus sont hors de propos sur ce ng)

> - variable d'environnement: oui, j'avais oublié ce détail. Il faut chercher un
> peu mais le résultat est plus simple.
> Je commence par les bases mais je ne cherche pas, pour l'instant, à connaître
> les nombreuses options des commandes en ligne.

C'est pourtant assez rapidement indispensable ; la preuve en est avec ce
premier problème consistant à simplement exécuter/lancer un programme ...

> Cordialement,
> Michel

mimidu74

unread,
Feb 26, 2012, 6:22:25 AM2/26/12
to
Bonjour Bertrand,
je n'avais pas fait attention au symbole "." dans la commande. Je ne l'ai jamais
utilisé, au bon vieux temps de MS-DOS, mais le symbole "..", ça oui...
Je vais réserver la modification de la variable CLASPATH aux répertoires de
projets.
Merci aux contributeurs, bonne journée,
Michel
0 new messages