[JAVA] erreur d'exécution: variables d'environnement?[résolu]

erreur d'exécution: variables d'environnement?[résolu] [JAVA] - Java - Programmation

Marsh Posté le 10-11-2002 à 10:30:52    

Voila j'ai un probleme que je n'ai jamais rencontré sous java. En effet j'arrive à compiler mes programmes mais je n'arrive pas à les exécuter, en effet voila ce qu'il me rend avec une classe que j'ai fait pour tester ce probleme qui devrait m'afficher rien et qui se trouve à la racine de mon c:\:
 
"C:\>jdk1.3.1_01\bin\java.exe c:\rien
Exception in thread "main" java.lang.NoClassDefFoundError: c:\rien"
 
J'ai entendu parler de variable d'environnement( je ne sais pas trop ce que sait) en fouillant sur le forum de jguru.com j'ai donc tenté de faire ceci:
 
 
C:\>set path c:\jdk1.3.1_01\bin
Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\system32\WBEM;C:\UTILIT~1\ULTRAE~1
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
 
C:\>path
PATH=C:\WINNT\system32;C:\WINNT;C:\WINNT\system32\WBEM;C:\UTILIT~1\ULTRAE~1
 
C:\>set
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\Bob_morton\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Fichiers communs
COMPUTERNAME=PARENTS
ComSpec=C:\WINNT\system32\cmd.exe
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\Bob_morton
LOGONSERVER=\\PARENTS
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\system32\WBEM;C:\UTILIT~1\ULTRAE~1
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 7 Stepping 3, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0703
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINNT
TEMP=C:\DOCUME~1\BOB_MO~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\BOB_MO~1\LOCALS~1\Temp
USERDOMAIN=PARENTS
USERNAME=Bob_morton
USERPROFILE=C:\Documents and Settings\Bob_morton
windir=C:\WINNT
 
mais à l'exécution j'obtiens toujours:
C:\>java c:\rien
Exception in thread "main" java.lang.NoClassDefFoundError: c:\rien
 
si quelqu'un pouvait me donner un coup de main ou un petit lien pouvant m'aider ca serit cool, merci d'avance.


Message édité par bobmorton le 11-11-2002 à 10:53:08
Reply

Marsh Posté le 10-11-2002 à 10:30:52   

Reply

Marsh Posté le 10-11-2002 à 12:05:58    

essaye dexecuter ton programme en te mettant dans le meme dossier et en tapant
 
> java rien
 
le probleme la c qu'il ne trouve pas le fichier a executer jcrois...

Reply

Marsh Posté le 10-11-2002 à 14:05:35    

premièrement : la commande java prend le nom de la class en argument, pas un fichier.
 
deuxièmement, le nom des classes doit commencer par une majuscule !

Reply

Marsh Posté le 10-11-2002 à 14:18:04    

benou a écrit a écrit :

premièrement : la commande java prend le nom de la class en argument, pas un fichier.
 
deuxièmement, le nom des classes doit commencer par une majuscule !




la majuscule ca ne change rien il me semble(dos ne fait pas de différence),quoiqu'il en soit j'ai testé avec et sans. Et le *.class tu n'es pas obligé de le mettre. Par contre en fouillant un peu sur le web j'ai découvert ce qu'était les variables d'environnement et apparemment ca ne ivent pas de la comme le montre l'exemple ci-dessous :
 
C:\>set path c:\jdk1.3.1_01\bin
Path=c:\jdk1.3.1_01\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
 
F:\Tp_graph>path
PATH=c:\jdk1.3.1_01\bin  
 
F:\Tp_graph>javac Arc.java
 
F:\Tp_graph>java Arc
Exception in thread "main" java.lang.NoClassDefFoundError: Arc
 

 
bon la je suis à bout je ne comprend pas il arrive à le compiler mais pas à l'exécuter si quelqu'un avait une idée ca serait cool merci
 
P.S.: ça ne vient pas du code, je l'ai testé sur une autre machine

Reply

Marsh Posté le 10-11-2002 à 14:24:06    

t'es sous quel environnement?

Reply

Marsh Posté le 10-11-2002 à 14:32:07    

jade a écrit a écrit :

t'es sous quel environnement?




windows XP pro

Reply

Marsh Posté le 10-11-2002 à 14:36:54    

bobmorton a écrit a écrit :

 
la majuscule ca ne change rien il me semble(dos ne fait pas de différence)




c'est pas une raison. C'est une convention de nommage très largement respéctée et très utiles !
 
sinon, peut être que le dos ne fait pas de différence, mais le ClassLoader la fait !
 

bobmorton a écrit a écrit :

 
Et le *.class tu n'es pas obligé de le mettre.




C'est pas que t'es pas obligé c'est qu'il ne faut pas !
 
 
Pour ton problème je suis quasiment certains que c'est '.' qui n'est pas dans le classpath. Erreur classique de débutant.
 
essaye en faisant

java -classpath . Arc


Message édité par benou le 10-11-2002 à 14:41:23
Reply

Marsh Posté le 10-11-2002 à 14:37:55    

oula, j'y ai jamais touché, mais essaie de faire: set classpath=.
pour indiquer le répertoire courant...
je ne sais pas si tu peux définir par défaut des variables d'environnement comme dans win2k, donc il faut que tu essaies ça en ligne de commande

Reply

Marsh Posté le 10-11-2002 à 14:40:58    

bien sur que tu peux régler les variables d'environnement sous winxp ...
 
c'est à peu près au même endroit que sous win2000

Reply

Marsh Posté le 10-11-2002 à 14:44:36    

benou: si tu le dis =)
je n'ai vraiment jamais touché winXP, mais bobmorton sous win2k tu peux donc créé une variable classpath sous: panneau de config -> sys -> onglet avancé ->variables d'env -> new -> classpath auquel tu donnes la valeur .
ça doit être à peu près la même chose alors

Reply

Marsh Posté le 10-11-2002 à 14:44:36   

Reply

Marsh Posté le 10-11-2002 à 14:45:15    

benou a écrit a écrit :

bien sur que tu peux régler les variables d'environnement sous winxp ...
 
c'est à peu près au même endroit que sous win2000




 
 
exact c ca
java -classpath . Arc  
 avec ca ca marche, sinon pour la majuscule je suis d'accord, je l'avais mise ce que je voulais dire c'est qu ce n'était pas ca la source d'erreur, idem pour le .class. Bon j'ai plus qu'à aller faire un tour sur le site de java pour découvrir ce qu'est un classpath. Merci à vous

Reply

Marsh Posté le 10-11-2002 à 14:52:24    

you're welcome.
 
classpath=liste des chemins séparés par des ';' dans lesquels aller chercher les .class. Les chemins sont soit des répertoires, soit des ficiher jar.

Reply

Marsh Posté le 10-11-2002 à 14:55:20    

benou a écrit a écrit :

you're welcome.
 
classpath=liste des chemins séparés par le séparateur de path du systeme (';' sous windows, ':' sous unix) dans lesquels aller chercher les .class. Les chemins sont soit des répertoires, soit des ficiher jar.



Reply

Marsh Posté le 10-11-2002 à 14:56:42    

you're right  :jap:

Reply

Marsh Posté le 10-11-2002 à 21:06:56    

Je reviens faire mon boulet, j'ai encore besoin de votre aide.
Je suis en train de faire un graph qui utilise 2 classes, une classe arc et une classe graphe qui utilise la classe arc dans sa définition.
D'ou l'idée de les mettre dans un package que j'ai pour le moment appelé gr et que j'ai mis dans le c:(j'ai également mis package gr au début de mes 2 classes qui fonctionnaient parfaitement avant que je ne les mette en package explicite).
Voila j'arrive maintenant à compiler ces classes à l'aide de la ligne de commande suivante:
C:\>javac  c:\gr\Arc.java
Seulement quand vient l'heure de la compilation ca se gate voilà ce qu j'ai tenté sans parvenir à aucun résultat:
 
"C:\>java -classpath . gr.Arc
Exception in thread "main" java.lang.NoClassDefFoundError: gr/arc (wrong name: g
r/Arc)
        at java.lang.ClassLoader.defineClass0(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$100(Unknown Source)
        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)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)"
 
C:\>java -classpath . gr.Arc
Exception in thread "main" java.lang.NoClassDefFoundError: gr/arc (wrong name: g
r/Arc)
       +meme chose que précédemment
 
C:\gr>java -classpath . Arc
Exception in thread "main" java.lang.NoClassDefFoundError: Arc (wrong name: gr/A
rc)
        +meme chose que précédemment
 
C:\>java gr.Arc
Exception in thread "main" java.lang.NoClassDefFoundError: gr/Arc
 
C:\>java classpath . gr.Arc
Exception in thread "main" java.lang.NoClassDefFoundError: classpath
 
enfin bon voila si quelqu'un pouvait me donner la bonne commande ou me dire ce que je n'ai pas fait correctement ca serait cool

Reply

Marsh Posté le 11-11-2002 à 01:32:20    

tu as un problème avec ta minuscule en début de classe !
 

Citation :

C:\>java -classpath . gr.Arc  
Exception in thread "main" java.lang.NoClassDefFoundError: gr/arc (wrong name: gr/Arc)


 
Il doit encore y avoir des restes de ton fichier avec une arc.java minuscule. Verifie que ta classe et que ton fichier ont bien une majuscule au début.

Reply

Marsh Posté le 11-11-2002 à 01:33:02    

la bonne commande c'est celle là :

Citation :

C:\>java -classpath . gr.Arc

Reply

Marsh Posté le 11-11-2002 à 10:51:59    

J'ai tout viré sauf mes *.java, j'ai tout recompilé(N.B: toi qui es comme moi un gros newbie et qui viens de tomber sur ce message à l'aide d'une recherche n'oublie pas de changer ton classpath sous dos si tu veux compiler tes packages) et cette fois ca marchait ca me fait bien plaisir merci encore @+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed