Rapporter un bug
3 participants
Page 1 sur 1
Rapporter un bug
Bonjour, ce sujet a pour but de signaler tout les bugs rencontrés afin de les corriger.
Je commence, j'ai déjà eu à plusieurs reprises cette exception :
Et je pense que je ne suis pas le seul. Cependant, habituellement, un simple make mj ou make clean après l'exception résolvait le problème.
Mais cette fois, non.
J'ai donc essayé quelques trucs et j'en suis arrivé à la conclusion que j'y comprenais rien aux Exceptions Java.
- Mise en commentaire de plein de trucs -> aucun changement.
- Remplacement de "abstract class EditorListener ..." par "class EditorListener" (j'ai viré abstract)
-> Résultat, l'exception n'apparait plus MAIS j'en ai une autre !
Je me dis "Lol WTF?" puis "Quitte à bricoler, autant bricoler crade".
Du coup je passe "MonCellRenderer" qui pose problème en abstract.
Résultat : ça ne compile plus : on ne peut pas instancier une classe abstraite (normal quoi).
Du coup je retire le abstract et là... WHAT THE FUCK ?!
Je recompile (SANS RIEN CHANGER D'AUTRE, j'insiste parce que j'ai VRAIMENT RIEN CHANGÉ D'AUTRE)
et devinez quoi ? ça marche -_-".
Du coup je me dis "et si je remet abstract sur EditorListener l'exception va revenir :S", je remet abstract et :O surprise... pas d'exception.
Pour résumer :
- Je vire abstract sur EditorListener -> exception sur monCellrender -> je le passe en abstract -> erreur compilation -> j'enleve le abstract de monCellRenderer -> ça compile -> je remet abstract sur EditorListener -> ÇA COMPILE WHAT?!
Si quelqu'un aurait la moindre idée de comment un tel truc est possible ça m'intéresse, et si vous savez comment le résoudre, encore plus.
Je commence, j'ai déjà eu à plusieurs reprises cette exception :
- Code:
Exception in thread "main" java.lang.NoClassDefFoundError: gui/containers/gm/EditorListener
at gui.containers.gm.GMWindow.initializeMainPanel(GMWindow.java:41)
at gui.containers.Window.<init>(Window.java:21)
at gui.containers.gm.GMWindow.<init>(GMWindow.java:31)
at mj.ClientMJ.loop(ClientMJ.java:35)
at mj.Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: gui.containers.gm.EditorListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 5 more
Et je pense que je ne suis pas le seul. Cependant, habituellement, un simple make mj ou make clean après l'exception résolvait le problème.
Mais cette fois, non.
J'ai donc essayé quelques trucs et j'en suis arrivé à la conclusion que j'y comprenais rien aux Exceptions Java.
- Mise en commentaire de plein de trucs -> aucun changement.
- Remplacement de "abstract class EditorListener ..." par "class EditorListener" (j'ai viré abstract)
-> Résultat, l'exception n'apparait plus MAIS j'en ai une autre !
- Code:
Exception in thread "main" java.lang.NoClassDefFoundError: gui/components/gm/MonCellRenderer
at gui.components.gm.MapElementSelector.<init>(MapElementSelector.java:117)
at gui.containers.gm.GMMapEditorTab.<init>(GMMapEditorTab.java:264)
at gui.containers.gm.GMWindow.initializeMainPanel(GMWindow.java:41)
at gui.containers.Window.<init>(Window.java:21)
at gui.containers.gm.GMWindow.<init>(GMWindow.java:31)
at mj.ClientMJ.loop(ClientMJ.java:35)
at mj.Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: gui.components.gm.MonCellRenderer
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 7 more
Je me dis "Lol WTF?" puis "Quitte à bricoler, autant bricoler crade".
Du coup je passe "MonCellRenderer" qui pose problème en abstract.
Résultat : ça ne compile plus : on ne peut pas instancier une classe abstraite (normal quoi).
Du coup je retire le abstract et là... WHAT THE FUCK ?!
Je recompile (SANS RIEN CHANGER D'AUTRE, j'insiste parce que j'ai VRAIMENT RIEN CHANGÉ D'AUTRE)
et devinez quoi ? ça marche -_-".
Du coup je me dis "et si je remet abstract sur EditorListener l'exception va revenir :S", je remet abstract et :O surprise... pas d'exception.
Pour résumer :
- Je vire abstract sur EditorListener -> exception sur monCellrender -> je le passe en abstract -> erreur compilation -> j'enleve le abstract de monCellRenderer -> ça compile -> je remet abstract sur EditorListener -> ÇA COMPILE WHAT?!
Si quelqu'un aurait la moindre idée de comment un tel truc est possible ça m'intéresse, et si vous savez comment le résoudre, encore plus.
Jolan- Admin
- Messages : 58
Age : 104
Localisation : Voie Lactée, bordure extérieure, ceinture d'astéroïdes, Kashyyk, Kamino centre, 22 rue des légendes.
Feuille de personnage
Nom du personnage:
Re: Rapporter un bug
Je ne sais pas quand le problème intervient.
Par contre, il vient de la gestion des .class et du Makefile.
J'ai eu le problème aussi, plusieurs fois, et toujours avec des classes internes.
Je crois qu'un des moyens de résoudre le problème est de sauvegarder le fichier (ou faire un "touch", quelque chose pour changer la date de dernière modication), ce qui provoque la recompilation du fichier.
J'vais essayer de voir d'où ça peut venir.
EDIT :
En fait, dans GearCreation et dans WeaponCreation, on avait des classes ayant le même nom (MatListener, ImageComponent).
Javac sauvegarde ces classes là dans des fichiers .class normaux, comme MatListener.class.
Le problème, c'est qu'on avait 2 MatListener différents (donc constructeurs différents). C'est pour ça que lorsque WeaponCreation fonctionnait, GearCreation ne fonctionnait pas.
Pour résoudre ça, j'ai créé une MatList dans le package "mj" (à déplacer dans gui/ si on s'en sert pour l'interface MJ un jour), et j'ai renommé "TypeListener" en "GearTypeListener" et "WeaponTypeListener".
Au passage, j'ai amélioré un peu le Makefile (plus rapide, et affichage plus clair).
Par contre, il vient de la gestion des .class et du Makefile.
J'ai eu le problème aussi, plusieurs fois, et toujours avec des classes internes.
Je crois qu'un des moyens de résoudre le problème est de sauvegarder le fichier (ou faire un "touch", quelque chose pour changer la date de dernière modication), ce qui provoque la recompilation du fichier.
J'vais essayer de voir d'où ça peut venir.
EDIT :
En fait, dans GearCreation et dans WeaponCreation, on avait des classes ayant le même nom (MatListener, ImageComponent).
Javac sauvegarde ces classes là dans des fichiers .class normaux, comme MatListener.class.
Le problème, c'est qu'on avait 2 MatListener différents (donc constructeurs différents). C'est pour ça que lorsque WeaponCreation fonctionnait, GearCreation ne fonctionnait pas.
Pour résoudre ça, j'ai créé une MatList dans le package "mj" (à déplacer dans gui/ si on s'en sert pour l'interface MJ un jour), et j'ai renommé "TypeListener" en "GearTypeListener" et "WeaponTypeListener".
Au passage, j'ai amélioré un peu le Makefile (plus rapide, et affichage plus clair).
Jérémy- Analyste-programmeur
- Messages : 79
Feuille de personnage
Nom du personnage:
Re: Rapporter un bug
J'ai un bug qui arrive sur les déplacements de créatures (généralement les grosses).
1 - Soit le déplacement ne s'effectue pas malgré qu'on a demandé le déplacement
2 - le déplacement est effectué et des fois la liste des pos atteignables ne se refresh pas
3 - d'autres bugs mineurs non visibles...
4 - (pas un bug mais à corriger) Le joueur n'est pas censé pouvoir voir la liste des pos atteignables des créatures adversaires. Il faut le cacher.
1 - Soit le déplacement ne s'effectue pas malgré qu'on a demandé le déplacement
2 - le déplacement est effectué et des fois la liste des pos atteignables ne se refresh pas
3 - d'autres bugs mineurs non visibles...
4 - (pas un bug mais à corriger) Le joueur n'est pas censé pouvoir voir la liste des pos atteignables des créatures adversaires. Il faut le cacher.
Djidane Zokawa- Analyste-programmeur
- Messages : 74
Feuille de personnage
Nom du personnage:
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|