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

Java Discussion :

Erreur "java.lang.InterruptedException" lorsque mon programme se ferme


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut Erreur "java.lang.InterruptedException" lorsque mon programme se ferme
    bonjour,

    j'ai développé une application avec une interface utilisateur. Lorsque je quitte le programme (en appuyant sur un JButton), il arrive de temps en temps qu'une java.lang.InterruptedException soit déclenchée.

    Voici le message complet :
    Exception while removing reference: java.lang.InterruptedException
    java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
    at sun.java2d.Disposer.run(Disposer.java:145)
    at java.lang.Thread.run(Thread.java:722)

    Voici les événements que j'ai implémenté pour la fermeture de mon application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
         /**
         * Destruction des boites de dialogue lors de la fermeture de
         * l'application.
         * @param evt
         */
        private void formWindowClosed(WindowEvent evt)                                  
        {                                      
            jDialogRename.dispose();
            jDialogCopy.dispose();
            jDialogOptions.dispose();
            jDialogLiquid.dispose();
            jDialogIText.dispose();
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /**
         * Bouton Quitter.
         * @param evt
         */
        private void jBtnQuitActionPerformed(ActionEvent evt)                                         
        {                     
            jLblStatus.setText("Arrêt de l'application");
            jLblStatus.repaint();                        
               this.dispose();
        }
    Comme cette exception est déclenchée de manière non systématique je n'arrive pas à en trouver l'origine. Avez-vous une idée de ce qui la déclenche ? Il semblerait qu'un objet ne soit pas détruit au moment de la fermeture, mais lequel ?

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Personnellement, je dirais que ce n'est pas tellement grave quand on voit la description de ta situation.
    Fais un catch(InteruptedException) {} pour ne pas tenir compte de cette exception. Fais cela si cela ne change pas la logique de fonctionnement de ton application.
    Cela se fait assez souvent de capturer cette exception et de ne rien faire pour elle
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Cela serait un bug du ramasse miette java ?

    Fais un catch(InteruptedException) {} pour ne pas tenir compte de cette exception.
    A quel niveau ? Lors du formWindowClosed ? A la fin de la fonction après tous les dispose() sur mes JDialog ?

  4. #4
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     private void jBtnQuitActionPerformed(ActionEvent evt)                                         
        {
           try {                     
            jLblStatus.setText("Arrêt de l'application");
            jLblStatus.repaint();                        
               this.dispose(); 
          } catch (InterruptedException e) {
             // Ne rien faire !
          }
        }
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par paissad Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     private void jBtnQuitActionPerformed(ActionEvent evt)                                         
        {
           try {                     
            jLblStatus.setText("Arrêt de l'application");
            jLblStatus.repaint();                        
               this.dispose(); 
          } catch (InterruptedException e) {
             // Ne rien faire !
          }
        }
    Dans ce cas l'appui sur le bouton risque de rien faire (pas de dispose de la JFrame principale) si une exception est levée, non ?

  6. #6
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Le problème, c'est qu'on ne sait pas si c'est le repaint() ou le le dispose() qui crée une exception ...
    L'idéal serait qu'on ait le stacktrace complet.
    Essaie ceci sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     private void jBtnQuitActionPerformed(ActionEvent evt)                                         
        {
            jLblStatus.setText("Arrêt de l'application");
           try {                     
            jLblStatus.repaint();                        
          } catch (InterruptedException e) {
          }
          this.dispose(); 
        }
    Si cette fois-ci tu obtiens une InterruptedException, à cause du dispose() .. faudrait regarder ailleurs dans ton programme de manière générale
    PS: d'ailleurs, est ce que le "this" se réfère au JFrame principal ?
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

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

Discussions similaires

  1. Erreur exception java.lang.NullPointerException
    Par geol99 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2007, 20h24
  2. erreur de java.lang.NullPointerException
    Par vince351 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 12h29

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