Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1139 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Erreur dans les applis graphiques

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur dans les applis graphiques

n°224141
chaica
Posté le 06-10-2002 à 12:35:17  profilanswer
 

Salut,
 
Je suis entrain de découvrir le java sous linux et j'ai un petit problème lorsque je tente de faire des applis toutes connes graphiques.  
 
ex bateau :
 
 

Code :
  1. public class HelloJavaSimple {
  2. public static void main(String[] args) {
  3.  javax.swing.JOptionPane.showMessageDialog(null, "Hello java!" );
  4. }
  5. }

 
 
 Me retourne :
 
./java HelloJavaSimple  
Exception in thread "main" java.lang.NoClassDefFoundError
 
Je précise que la compilation avec javac ne me donne aucune erreur et que l'exemple sort tout droit d'un bouquin.
 
Voilà, je suis un peu paumé :D
 
CHaiCA


Message édité par chaica le 06-10-2002 à 12:35:34
mood
Publicité
Posté le 06-10-2002 à 12:35:17  profilanswer
 

n°224148
benou
Posté le 06-10-2002 à 13:35:58  profilanswer
 

ton classpath n'est pas correct.
 
met toi dans le rep où il y a le .class et tape

./java -classpath . HelloJavaSimple

n°224153
chaica
Posté le 06-10-2002 à 13:50:42  profilanswer
 

Ben si il est correct.
 
 

Code :
  1. chaica@debian:/j2sdk1.4.1/bin$ ls
  2. ControlPanel                extcheck        javah         policytool
  3. HelloJava1.class            hellojava.java  javap         rmic
  4. HelloJava1.java             idlj            jdb           rmid
  5. HelloJavaCommandLine.class  jar             keytool       rmiregistry
  6. HelloJavaCommandLine.java   jarsigner       kinit         serialver
  7. HelloJavaSimple.class       java            klist         servertool
  8. HelloJavaSimple.java        java-rmi.cgi    ktab          tnameserv
  9. HtmlConverter               javac           native2ascii
  10. appletviewer                javadoc         orbd

 
 
Et donc après :
 
 

Code :
  1. chaica@debian:/j2sdk1.4.1/bin$ ./java -classpath . HelloJavaSimple
  2. Exception in thread "main" java.lang.NoClassDefFoundError
  3.         at java.lang.Class.forName0(Native Method)
  4.         at java.lang.Class.forName(Class.java:140)
  5.         at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
  6.         at sun.awt.motif.MToolkit.<clinit>(MToolkit.java:72)
  7.         at java.lang.Class.forName0(Native Method)
  8.         at java.lang.Class.forName(Class.java:140)
  9.         at java.awt.Toolkit$2.run(Toolkit.java:712)
  10.         at java.security.AccessController.doPrivileged(Native Method)
  11.         at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:703)
  12.         at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
  13.         at javax.swing.LookAndFeel$1.createValue(LookAndFeel.java:274)
  14.         at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:181)
  15.         at javax.swing.UIDefaults.get(UIDefaults.java:126)
  16.         at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:44)
  17.         at javax.swing.UIDefaults.getIcon(UIDefaults.java:407)
  18.         at javax.swing.UIManager.getIcon(UIManager.java:537)
  19.         at javax.swing.plaf.basic.BasicOptionPaneUI.getIconForType(BasicOptionPaneUI.java:557)
  20.         at javax.swing.plaf.basic.BasicOptionPaneUI.getIcon(BasicOptionPaneUI.java:543)
  21.         at javax.swing.plaf.basic.BasicOptionPaneUI.createMessageArea(BasicOptionPaneUI.java:313)
  22.         at javax.swing.plaf.basic.BasicOptionPaneUI.installComponents(BasicOptionPaneUI.java:154)
  23.         at javax.swing.plaf.basic.BasicOptionPaneUI.installUI(BasicOptionPaneUI.java:122)
  24.         at javax.swing.JComponent.setUI(JComponent.java:449)
  25.         at javax.swing.JOptionPane.setUI(JOptionPane.java:1675)
  26.         at javax.swing.JOptionPane.updateUI(JOptionPane.java:1697)
  27.         at javax.swing.JOptionPane.<init>(JOptionPane.java:1660)
  28.         at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:810)
  29.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:624)
  30.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:595)
  31.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:566)
  32.         at HelloJavaSimple.main(HelloJavaSimple.java:3)

 
 
Voila. Toujours aussi paumé. Par contre je précise que si je fais un prog qui ne marche qu'en ligne de commande ca marche mais dès que c'est graphique ca foire.
 
CHaiCA

n°224163
darklord
You're welcome
Posté le 06-10-2002 à 14:12:41  profilanswer
 

chaica a écrit a écrit :

Ben si il est correct.




 
c'est cela oui. Déjà tu crois que mettre tes classes dans le rép bin va aider?  :eek2:  
 
Fais comme Benou t'a dit


---------------
Just because you feel good does not make you right
n°224169
chaica
Posté le 06-10-2002 à 14:16:24  profilanswer
 

DarkLord: Excuse moi mais va falloir être plus précis.
 
Mon HelloJavaSimple.class est dans mon rep bin/ comme le montre mon  ls.
 
Si je suis dans bin/ et que je tape ./java -classpath . HelloJavaSimple il recherche dans . cad bin/ donc où est le problème?
 
CHaiCA

n°224170
darklord
You're welcome
Posté le 06-10-2002 à 14:17:40  profilanswer
 

bin c'est bien ce que je te reproche !!! :)
 
Tes classes sources et compilées n'ont rien à faire dans le répertoire bin ...  
 
Cela dit, si ca ne fonctionne toujours pas avec la manip que Benou t'as donné je suis perplexe ... J'ai vu que tu as JDK 1.4 donc normallement  ca doit etre bon


---------------
Just because you feel good does not make you right
n°224171
darklord
You're welcome
Posté le 06-10-2002 à 14:18:18  profilanswer
 

tu as un serveur X de démarré lorsque tu fais cette manip?


---------------
Just because you feel good does not make you right
n°224175
chaica
Posté le 06-10-2002 à 14:28:50  profilanswer
 

Ben oui. Mon serveur X tourne en ce moment même.
 
Et pour vous faire plaisir j'ai changé de paths mes fichiers donc maintenant je tape
 

Code :
  1. ./java -classpath ~/java/ HelloJavaSimple

 
 
Mais je me fais toujours bouler avec :
 

Code :
  1. chaica@debian:/j2sdk1.4.1/bin$ ./java -classpath ~/java/ HelloJavaSimple
  2. Exception in thread "main" java.lang.NoClassDefFoundError
  3.         at java.lang.Class.forName0(Native Method)
  4.         at java.lang.Class.forName(Class.java:140)
  5.         at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
  6.         at sun.awt.motif.MToolkit.<clinit>(MToolkit.java:72)
  7.         at java.lang.Class.forName0(Native Method)
  8.         at java.lang.Class.forName(Class.java:140)
  9.         at java.awt.Toolkit$2.run(Toolkit.java:712)
  10.         at java.security.AccessController.doPrivileged(Native Method)
  11.         at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:703)
  12.         at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
  13.         at javax.swing.LookAndFeel$1.createValue(LookAndFeel.java:274)
  14.         at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:181)
  15.         at javax.swing.UIDefaults.get(UIDefaults.java:126)
  16.         at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:44)
  17.         at javax.swing.UIDefaults.getIcon(UIDefaults.java:407)
  18.         at javax.swing.UIManager.getIcon(UIManager.java:537)
  19.         at javax.swing.plaf.basic.BasicOptionPaneUI.getIconForType(BasicOptionPaneUI.java:557)
  20.         at javax.swing.plaf.basic.BasicOptionPaneUI.getIcon(BasicOptionPaneUI.java:543)
  21.         at javax.swing.plaf.basic.BasicOptionPaneUI.createMessageArea(BasicOptionPaneUI.java:313)
  22.         at javax.swing.plaf.basic.BasicOptionPaneUI.installComponents(BasicOptionPaneUI.java:154)
  23.         at javax.swing.plaf.basic.BasicOptionPaneUI.installUI(BasicOptionPaneUI.java:122)
  24.         at javax.swing.JComponent.setUI(JComponent.java:449)
  25.         at javax.swing.JOptionPane.setUI(JOptionPane.java:1675)
  26.         at javax.swing.JOptionPane.updateUI(JOptionPane.java:1697)
  27.         at javax.swing.JOptionPane.<init>(JOptionPane.java:1660)
  28.         at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:810)
  29.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:624)
  30.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:595)
  31.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:566)
  32.         at HelloJavaSimple.main(HelloJavaSimple.java:3)

 
 
Ca doit être tout con mais je me demande qu'est ce que j'oublie.  
 
CHaiCA

n°224178
veryfree
Posté le 06-10-2002 à 14:34:07  profilanswer
 

essaye de faire ca ./java -classpath .:$CLASSPATH HelloJavaSimple
 
edit : en fait je pense tout simplement que java ne trouve pas le fichier rt.jar (qui est ds jre/lib sous windows en tt cas )
ajoute le a ton classpath...


Message édité par veryfree le 06-10-2002 à 14:41:41
n°224186
chaica
Posté le 06-10-2002 à 14:56:12  profilanswer
 

veryfree : Comment je fais pour l'ajouter à mon classpath?  
 
CHaiCA

mood
Publicité
Posté le 06-10-2002 à 14:56:12  profilanswer
 

n°224188
darklord
You're welcome
Posté le 06-10-2002 à 15:01:46  profilanswer
 

veryfree a écrit a écrit :

essaye de faire ca ./java -classpath .:$CLASSPATH HelloJavaSimple
 
edit : en fait je pense tout simplement que java ne trouve pas le fichier rt.jar (qui est ds jre/lib sous windows en tt cas )
ajoute le a ton classpath...




 
si il y est. Si il n'y était pas tu n'aurais pas la stack trace du JOptionPane...


---------------
Just because you feel good does not make you right
n°224189
darklord
You're welcome
Posté le 06-10-2002 à 15:04:42  profilanswer
 

bon j'ai testé ton code et il fonctionne ...
 
Fait qd meme un  

Code :
  1. java -version


 
tu as un peut etre un vieux JDK installé sur ta machine


---------------
Just because you feel good does not make you right
n°224190
chaica
Posté le 06-10-2002 à 15:09:23  profilanswer
 

Bon récapitulons.
 
Mon HelloJavaSimple.java compile sans problèmes.
 
Je stock mes fichiers dans ~/java/
 
Mon fichier java est dans /j2sdk1.4/bin/
 
je tape donc :
 
 

Code :
  1. chaica@debian:/j2sdk1.4.1/bin$ ./java -classpath ~/java/ HelloJavaSimple

 
 
Et ca m'envoie chier avec :
 
 

Code :
  1. chaica@debian:/j2sdk1.4.1/bin$ ./java -classpath ~/java/ HelloJavaSimple
  2. Exception in thread "main" java.lang.NoClassDefFoundError
  3.         at java.lang.Class.forName0(Native Method)
  4.         at java.lang.Class.forName(Class.java:140)
  5.         at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
  6.         at sun.awt.motif.MToolkit.<clinit>(MToolkit.java:72)
  7.         at java.lang.Class.forName0(Native Method)
  8.         at java.lang.Class.forName(Class.java:140)
  9.         at java.awt.Toolkit$2.run(Toolkit.java:712)
  10.         at java.security.AccessController.doPrivileged(Native Method)
  11.         at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:703)
  12.         at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
  13.         at javax.swing.LookAndFeel$1.createValue(LookAndFeel.java:274)
  14.         at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:181)
  15.         at javax.swing.UIDefaults.get(UIDefaults.java:126)
  16.         at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:44)
  17.         at javax.swing.UIDefaults.getIcon(UIDefaults.java:407)
  18.         at javax.swing.UIManager.getIcon(UIManager.java:537)
  19.         at javax.swing.plaf.basic.BasicOptionPaneUI.getIconForType(BasicOptionPaneUI.java:557)
  20.         at javax.swing.plaf.basic.BasicOptionPaneUI.getIcon(BasicOptionPaneUI.java:543)
  21.         at javax.swing.plaf.basic.BasicOptionPaneUI.createMessageArea(BasicOptionPaneUI.java:313)
  22.         at javax.swing.plaf.basic.BasicOptionPaneUI.installComponents(BasicOptionPaneUI.java:154)
  23.         at javax.swing.plaf.basic.BasicOptionPaneUI.installUI(BasicOptionPaneUI.java:122)
  24.         at javax.swing.JComponent.setUI(JComponent.java:449)
  25.         at javax.swing.JOptionPane.setUI(JOptionPane.java:1675)
  26.         at javax.swing.JOptionPane.updateUI(JOptionPane.java:1697)
  27.         at javax.swing.JOptionPane.<init>(JOptionPane.java:1660)
  28.         at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:810)
  29.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:624)
  30.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:595)
  31.         at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:566)
  32.         at HelloJavaSimple.main(HelloJavaSimple.java:3)

 
 
Voila. En espérant que quelqu'un voit le problème. Ca me ferait chier de demander ça à mon prof lundi :D (surtout que rien ne dit qu'il sache le résoudre lalalala)
 
CHaiCA

n°224192
darklord
You're welcome
Posté le 06-10-2002 à 15:12:20  profilanswer
 

lance la JVM en mode verbose pour voir ce qu'elle fous (-v)


---------------
Just because you feel good does not make you right
n°224199
chaica
Posté le 06-10-2002 à 15:25:08  profilanswer
 

chaica@debian:/j2sdk1.4.1/jre/bin$  ./java_vm  
java_vm process: could not find Java VM symbols
 
 
CHaiCA

n°224204
veryfree
Posté le 06-10-2002 à 15:31:25  profilanswer
 

chaica a écrit a écrit :

chaica@debian:/j2sdk1.4.1/jre/bin$  ./java_vm  
java_vm process: could not find Java VM symbols
 
 
CHaiCA




 
c'est java -v tonProg qu il fallait faire ....

n°224214
chaica
Posté le 06-10-2002 à 15:43:25  profilanswer
 

Je viens de le faire et il n'y a rien de flagrant. Il ne fait que des loaded et signale une erreur suivant ce que j'ai déja affiché plus haut dans le post.
 
CHaiCA

n°224226
chaica
Posté le 06-10-2002 à 16:05:27  profilanswer
 

Mais ca n'a rien à voir avec un mauvais positionnement  du fichier .class de toute facon puisque j'ai un programme en ligne de commande qui marche très bien.
 
C'est l'appel aux librairies graphiques qui semble bloquer le programme.
 
CHaiCA


Message édité par chaica le 06-10-2002 à 16:07:55
n°224243
darklord
You're welcome
Posté le 06-10-2002 à 16:59:33  profilanswer
 

bin vi j'avais bien compris. Mmmm je démarre mon serveur redhat tout à l'heure et je testerai ton code ...


---------------
Just because you feel good does not make you right
n°224247
chaica
Posté le 06-10-2002 à 17:10:38  profilanswer
 

Ce serait cool merci.
 
CHaiCA

n°224367
gfive
Posté le 07-10-2002 à 10:11:44  profilanswer
 

Essaie déjà, en tout premier lieu, de savoir quel exécutable java tu utilises!!
 
en faisant :  
 
which java
 
Parce que dans les distribs Linux, il y a souvent Kaffee par défaut, une implémentation GNU de Java...qui marche pas!!
 
Donc, première chose à faire, vérifier que tu utilises bien le binaire du jdk, le mieux, c'est d'ajouter ../jdk.../bin à ton PATH (tu édites ton .bashrc, ou ton .profile, ou carrément /etc/profile)
 
Après, il faut que tu crées une variable d'environnement JAVA_HOME, qui pointe vers la racine de ton install JDK (chez moi : /usr/local/jdk)  
 
Ensuite,  si tu utilises le bon binaire, le rt.jar est normalement par défaut adns ton classpath....
 
Mais bon, sinon, Dark a raison, aller mettre des .java et des .class dans $JAVA_HOME/bin, ça n'a aucun sens, mais si tu te démerdes bien, tu devrais pouvoir mettre tes sources et tes classes où tu veux sans aucune contrainte, et ça marchera, pour peu que tout soit bien configuré!

n°224378
BifaceMcLe​OD
The HighGlandeur
Posté le 07-10-2002 à 10:47:47  profilanswer
 

Ca plante dans cette fonction du JDK :

Code :
  1. public static synchronized GraphicsEnvironment getLocalGraphicsEnvironment() {
  2.   if (localEnv == null) {
  3.     String nm = (String) java.security.AccessController.doPrivileged
  4. (new sun.security.action.GetPropertyAction
  5.  ("java.awt.graphicsenv", null));
  6.     try {
  7.       localEnv =
  8.     (GraphicsEnvironment) Class.forName(nm).newInstance();
  9.       if (isHeadless()) {
  10.         localEnv = new HeadlessGraphicsEnvironment(localEnv);
  11.       }
  12.     } catch (ClassNotFoundException e) {
  13.       throw new Error("Could not find class: "+nm);
  14.     } catch (InstantiationException e) {
  15.       throw new Error("Could not instantiate Graphics Environment: "
  16.                       + nm);
  17.     } catch (IllegalAccessException e) {
  18.       throw new Error ("Could not access Graphics Environment: "
  19.                        + nm);
  20.     }
  21.   }
  22.   return localEnv;
  23. }


 
Ca me parait assez clair : le JAR qui permet à la JVM d'utiliser le serveur X n'est pas dans ton CLASSPATH.
Malheureusement, je travaille sur plate-forme Wintel, donc je ne pourrai pas te dire lequel. Mais si tu pouvais poster le contenu de ton CLASSPATH, cela permettrait peut-être aux UNIXiens ici présents de te dire ce qui manque...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Erreur dans les applis graphiques

 

Sujets relatifs
Erreur toute conne en php -> if...erreur sql ca doit pas etre grand chose mais trouve pas
ErreurErreur de variable !!??!!?? [résolu]
Grosse erreur de ouf sur les sessions !!!!! [Résolu][MYSQL] Erreur dans PhpMyAdmin
[PHP] message d'erreur->Je comprand rien ! help meErreur avec le controle data
[PHP]Erreur accès à une base de donnée MysqlErreur d'execuiton '53'...Que faire ?
Plus de sujets relatifs à : Erreur dans les applis graphiques


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR