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

AWT/Swing Java Discussion :

Bug java util


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Bug java util
    Hello
    J"ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    java.lang.ArrayIndexOutOfBoundsException: 3 > 2
    	at java.util.Vector.insertElementAt(Vector.java:598)
    	at javax.swing.tree.DefaultMutableTreeNode.insert(DefaultMutableTreeNode.java:191)
    	at javax.swing.tree.VariableHeightLayoutCache.createNodeAt(VariableHeightLayoutCache.java:781)
    	at javax.swing.tree.VariableHeightLayoutCache.treeNodesInserted(VariableHeightLayoutCache.java:491)
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesInserted(BasicTreeUI.java:3878)
    	at org.jdesktop.swingx.tree.TreeModelSupport.fireChildrenAdded(TreeModelSupport.java:253)
    	at org.jdesktop.swingx.tree.TreeModelSupport.fireChildAdded(TreeModelSupport.java:211)
    Je suis totalement sur que le probablement ne viens pas directement de mon code, mais l’erreur surviens un peu trop souvent!!

    Imagine que c'est bug swing!! Y a t"il une personne qui a peu trouver une solution ou un contournement a cette type d’erreur?

    Merci.
    Mon Java SE version : 1.8.0_60
    Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
    Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

    java.util.Vector.insertElementAt(Vector.java:598)
    Pointe sur le code suivant :
    Nom : java.util.png
Affichages : 108
Taille : 33,2 Ko

    Note : le bug ressemble fortement a cela https://bugs.openjdk.java.net/browse/JDK-4007842



  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    D'un point de vue probabilité mathématique, le problème vient forcément de ton code.
    Avant la ligne qui pose problème, affiche toutes les données du Vector ainsi que sa taille.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Visiblement ton noeud dans l'arbre a 2 éléments et tu essaie d'insérer un élément en position 3 ce qui n'est pas permis. Les position autorisées sont 0,1,2

    Donc qu'est-ce qui déclenche ce fireChildAdded?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par geforce Voir le message
    Note : le bug ressemble fortement a cela https://bugs.openjdk.java.net/browse/JDK-4007842
    Absolument pas: ce bug concerne l'implémentation sparc et dit juste que le message retourné par l'exception est mal rédigé. C'est juste du cosmétique :p

  5. #5
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Oui je suis conscient de la probabilité mais je suis à cours de solution!!
    Je me dis que j'utilise que des collections et que la gestion de la mémoire doit être gérée automatiquement... mais la

    De plus ce qui me trouble le plus c'est que ce n'est pas reproductible a 100% des cas il y a des cas pour les même donnes d'entre marche très bien et d'autre nom, ce qui me laisse encore plus troublé!!!



    NB: Pour le lien, Oui finalement c'est juste le même message et comportement d'erreur.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je pense que cela vient d'une utilisation incorrecte de l'EDT.
    En clair tu dois probablement modifier le TreeModel de ton JTree via un thread différent de l'EDT.

    Des fois çà marche... mais des fois çà marche pas... car l'EDT est justement en train d'accéder aux données du modèle et se retrouve dans un état incohérent.



    Pour trouver cela il faut vérifier tout ton code.
    Le plus simple étant de forcer la vérification de l'EDT sur ton modèle.
    Comme c'est une interface cela peut se faire assez simplement avec quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		JTree tree = new JTree();
    		// ...
    		tree.setModel(onlyOnEDT(TreeModel.class, tree.getModel()));

    Avec onlyOnEDT() une méthode définie comme ceci :
    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
    	public static <T> T onlyOnEDT(Class<T> interfaceType, T instance) {
    		Object proxy = Proxy.newProxyInstance(instance.getClass().getClassLoader(),
    				new Class<?>[]{interfaceType}, new InvocationHandler() {
     
    					@Override
    					public Object invoke(Object proxy, Method method, Object[] args)
    							throws Throwable {
    						if (SwingUtilities.isEventDispatchThread()==false) {
    							throw new IllegalStateException(method.getDeclaringClass().getSimpleName()
    									+ "." + method.getName() + "() must be called on EDT.");
    						}
    						return method.invoke(instance, args);
    					}
    				});
    		return interfaceType.cast(proxy);
    	}

    Cela te génèrera une exception dès que tu utilises une méthode du modèle hors de l'EDT.
    Cela devrait te permettre de trouver le code fautif...


    a++

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux aussi intégrer le look and feel "substance" qui, en plus de faire du look and feel, vérifie constament que les appels se font bien depuis l'EDT. Il permet ainsi de détecter rapidement beaucoup de cas d'utilisoation foireux

  8. #8
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Filialement la solution été d"utiliser des LinkedHashSet<>(); a la place des HashSet(); a cause de l"ordre d'insertion des firesEvent dans le Tree.


    Merci!

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

Discussions similaires

  1. Bug bizarre dans java.util.regexp
    Par LodeRunner64 dans le forum Collection et Stream
    Réponses: 0
    Dernier message: 20/05/2009, 16h05
  2. [java.util.logging] trop d'info parasite....
    Par zolive dans le forum Logging
    Réponses: 2
    Dernier message: 25/05/2004, 16h17
  3. [Debutant(e)]NoClassDef:java/util/Iterator
    Par MASSAKA dans le forum Général Java
    Réponses: 9
    Dernier message: 25/05/2004, 09h48
  4. [PROPERTIES] Bug dans java.util.Properties ?
    Par mathieu dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 28/04/2004, 15h11
  5. Réponses: 4
    Dernier message: 06/02/2004, 16h23

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