java.io.NotSerializableExcepti on: sun.awt.AppContext ? qu'est donc ?

java.io.NotSerializableExcepti on: sun.awt.AppContext ? qu'est donc ? - Java - Programmation

Marsh Posté le 23-11-2003 à 17:41:44    

dans mon programme j'effectue une sauvegarde avec writeObject()
seulement si l'objet que j'enregistre satisfait certaines conditions.
 
en fait je remplie un vecteur au fur et à mesute et je met à un jour le fichier qui contient ce vecteur.
 
qd les données à ajouter au vecteur sont incorrectes, je ne les ajoute pas et la sauvegarde n'a aps lieu.
 
si apres je sauveagrde de nouvelles données l'exception  
java.io.NotSerializableException: sun.awt.AppContext  
est levée à l'ecriture.
 
cette exception se leve seulemnt si j'ai essayé de rentrer de mauvaises données dans mon vecteur la fois d'avant.
 
 
n'est ce pas bizarre ?
 
la classe qui contient mon vecteur est implements Serializable et les objets que je met dans le vecteur aussi.

Reply

Marsh Posté le 23-11-2003 à 17:41:44   

Reply

Marsh Posté le 23-11-2003 à 18:00:30    

Cette exception signifie que dans ton vecteur, il y a un objet de type sun.awt.AppContext, ou un objet qui contient une reference sur un objet de type sun.awt.AppContext, qui n'a pas l'air serializable.
A toi de trouver comment cette reference se retrouve là, avec ce que tu dis on ne peut pas en savoir plus.
 
EDIT : tu peux deja commencer par cacther l'exception et faire un printStackTrace(), ca pourrait te donner des indices.


Message édité par R3g le 23-11-2003 à 18:01:41

---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 24-11-2003 à 00:11:17    

ok, j'avais donc bien compris le sens de l'exception, mais elle semble ne plus se lever...
 
merci

Reply

Marsh Posté le 24-11-2003 à 00:45:56    

normalement NoSuchMethodError est une erreur qui apparait lors de la compilation, non ?
là je l'ai pendant le deroulement. Je ne comprends pas cette erreur, j'ai pourtant declaré cette methode !
 
la class UneSemaineReservations est un tableau de 5 vecteurs.
public Vector getLesReservationDuJour(int telJour){return saSemaineReservations[telJour];} //est censé renvoyé un vecteur
 
Exception in thread "main" java.lang.NoSuchMethodError: UneSemaineReservations.
getLesReservationDuJour(I)Ljava/util/Vector;
        at UneFenetrePlanning.recupererSemaineReservations(UneFenetrePlanning.java:108)
        at UneFenetrePlanning.<init>(UneFenetrePlanning.java:28)
        at TP5Planning.main(TP5Planning.java:5)

Reply

Marsh Posté le 24-11-2003 à 08:24:30    

Cette exception se produit à l'execution (jmais à la compile) dans 2 cas :  
1) quand tu fais de la reflexion (utilisation du package java.lang.reflect) et que tu essaye d'appeler une méthode qui n'existe pas sur un objet
2) quand une classe a été compilée alors qu'une méthode d'un objet été disponible et que à l'execution elle ne l'est plus (la classe l'objet qui possédait cette méthode a été recompil et la méthode supprimée). C'est plutot rare et ca intervient d'habitude quand on a une mauvaise config (classpath de compile différent de classpath d'execution) ou quand on se sert d'un jar de version différente à la compile et a l'execution.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-11-2003 à 08:32:00    

si tu ne comprend pas pkoi elle est levée, balance les lignes de code autour de l'endroit où l'exception est générée


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-11-2003 à 19:26:33    

avec JCreator, j'ai créé 2 projets :
_un qui sauvegarde dans le fichier(prog1)
_l'autre qui restaure à partir du fichier(prog2)
 
dans chacun des projets existe les classes UneReservation et UneSemaineReservations, elles ont exactement le meme code.
 
Quand avec prog2 j'essaie d'ouvrir un fichier créé par prog1, j'avais un probleme de n° d'identification de class.
pour régler le probleme j'ai copié UneReservation.class et UneSemaineReservation.class dans le repertoire de prog2.
 
La j'ai pu lancer prog2 sans probleme jusqu'à l'exception NoSuchMethodError.
 
Le probleme viendrait il de là ?

Reply

Marsh Posté le 24-11-2003 à 19:34:04    

oui. la liaison à la méthode doit être cassée puisqu'il ne s'agit plus de la même classe (puisqu'issue de 2 sources différents).
Logiquement, tu ne devrais pas avoir 2 sources différents si c'est la même classe ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-11-2003 à 21:18:13    

elle ne sont pas dans le meme repertoire en fait !  
bon je regle ce probleme et si ca persiste je donne de mes nouvelles
 
 
merci ;)

Reply

Sujets relatifs:

Leave a Replay

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