IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

serialisation et java.lang.StackOverflowError


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut serialisation et java.lang.StackOverflowError

    je tente de serialiser un objet et ...
    je tombe sur java.lang.StackOverflowError !!


    existe t il un moyen de sérialiser les objets de grosse taile

    je mets le code mais ça aidera pas beaucoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(path+fileName));
       out.writeObject("Namespace storage");
    NameSpace test3 = this.namespace;
     out.writeObject(test3);
       out.close();

  2. #2
    Membre confirmé Avatar de L8O8L
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 148
    Par défaut
    T'as pensé a mettre 'implements Serializable' (ou qqch comme ca) à tes classes?

  3. #3
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    Yé j'ai trouvé la solution dans l'historique de ce forum
    http://www.developpez.net/forums/arc...p/t-20101.html
    en résumé, il y a un probleme de récursion dans tes classes

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class DataFils implements Serializable{
        DataPere pere;
    }
     
    class DataPere implements Serializable{
        DataFils fils;
    }
    Donc en contruisant le chemin des object serializable le JVM tourne en rond.
    En utilisant transient cela peux régler le problème.
    transient spécifient qu'on ne veux pas entregisterer cette information :
    transient DataFils fils;

    si cela ne suffi pas faudrait voir Externalizable

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut


    j ai réussi !!!

    pour info l objet que je cherchais à serialiser n'est pas de moi ( c'est la classe bsh.NameSpace ... du beanshell ) mais implémente bien serializable

    le probleme venait du fait que cet objet est utilisé de façon arborescente ( pére lié aux fils, ainsi de suite )

    le truc est de placer le namespace en parametre d'une fonction et de le serialiser dans cette sous fonction ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. une erreur horreure java.lang.StackOverFlowError
    Par mahmoud_mahmoud dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 04/03/2008, 11h20
  2. Exception in thread "main" java.lang.StackOverflowError
    Par une_tite_question dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 25/02/2008, 10h49
  3. java.lang.StackOverflowError sur évènement windowDeactivated
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 10/06/2007, 22h23
  4. Réponses: 2
    Dernier message: 15/03/2007, 14h00
  5. java lang StackOverflowError
    Par kokumbo dans le forum Langage
    Réponses: 3
    Dernier message: 05/12/2006, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo