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 :

Erreur java.lang.StackOverflowError pour des class imbriqué


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 30
    Points
    30
    Par défaut Erreur java.lang.StackOverflowError pour des class imbriqué
    Bonjour,

    Je suis nouveau sur le forum et j'ai déjà des questions à vous poser, lol.

    Je développe actuellement en Java une application qui doit extraire à parti d'un fichier excel, l'arborescence d'un menu.
    Jusqu'à présent j'ai réussi à lire et récupérer le chemin de chaqu item du menu, que j'ai mis dans un fichier texte (.csv).

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        root;English;Entertaiment;Ring Tone
    où Ring Tone est un item final (une feuille dans un arbre)
    English et Entertaiment des noeuds de sous-menus


    Mais un fichier txt n'est pas génial pour construire un menu. Je devrait à chaque fois lire le fichier et identifier les noeuds pères et les fils. Je ne pourrait pas construire mon menu de façon récursive.

    J'ai pensé à une solution en Java, qui imbriquerait des class que j'aurai définies:

    - MenuTree (contient un attribut de type ItemList)
    - ItemList (contient un Vector de type Item -> Vector<Item>)
    - Item (contient un attribut de type ItemList)

    Un menu est constitué d'un nombre d'item (ItemList). Chacun de ces items peuvent être des noeuds de sous menu. Donc il faut aussi définir un ItemList pour chacun de ces items.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    	public MenuTree(){
    		this.rootName="root";
    		this.itemList=new ItemList();
    	}
     
     
    	public ItemList(){
    		this.item_list=new Vector <Item>(1,1);
    		this.item_list.add(new Item());
    	}
     
     
    	public Item(){
     
    		this.cmdBxx="";
    		this.fatherName="";
    		this.itemName="";
    		this.itemType="";
    		this.itemList=new ItemList(); /* ICI le problème*/
    	}
    Apparemment le problème se situe au niveau de la création de l'attribut "itemList ". Java me génère une erreur de type : " java.lang.StackOverflowError "

    Je ne sais pas quel genre d'erreur c'est, d'où peut provenir l'erreur.

    Lorsque je supprime l'attribut " itemList ", tout fonctionne normalement. Mais du coup je n'ai plus qu'un menu avec seulement un seul niveau.

    Est-ce que quelqu'un d'entre vous a déjà rencontré ce type de problème.

    Merci

  2. #2
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Points : 178
    Points
    178
    Par défaut
    Normal !!

    TU crée un itemlist, tu lui rajoute un nouvel item, qui lui-même crée un item list (la liste en commentaire), etc...
    C'est une boucle infinie avec des appels de méthodes récursifs, d'où le stackoverflow.

    1- Crée seulement un item list dans un item seulement si tu en as besoin.
    2- utilise ArrayList plutôt que Vector pour gérer tes listes, pour des raisons de performance, car Vector est synchronisé et ArrayList non.

    Enfin , pour te rassurer, tout le monde a rencontré ce problème au moins une fois dans sa vie....
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    merci beaucoup de ton aide xv-mnt.

    moi qui voulait faire du récursif, je suis servi.

    merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2014, 20h40
  2. Réponses: 7
    Dernier message: 05/05/2014, 11h16
  3. Erreur Erreur java.lang.StackOverflowError
    Par maximus95380 dans le forum Général Java
    Réponses: 5
    Dernier message: 08/10/2012, 12h10
  4. erreur java.lang.StackOverflowError
    Par titio04 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 13/09/2009, 21h34
  5. 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

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