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

avec Java Discussion :

Exception while removing reference déclenché lorsque je quitte mon programme


Sujet :

avec Java

  1. #1
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut Exception while removing reference déclenché lorsque je quitte mon programme
    bonjour,

    Je programme mes applications java sous Netbeans.

    Lorsque je clique sur le bouton Quitter de mon programme j'ai parfois cette exception qui est déclenchée :
    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:118)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at sun.java2d.Disposer.run(Disposer.java:127)
    at java.lang.Thread.run(Thread.java:662)
    BUILD SUCCESSFUL (total time: 12 seconds)
    Ma JFrame a ce paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    et lorsque j'appuie sur Quitter, je fais bien un
    Je n'arrive pas à comprendre d'où cela vient. De quelle référence s'agit-il ?

    Ou serait mon erreur ?

  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 : 43
    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
    Il nous faut plus d'info sur le programme, et un peu de code si c'est pertinent

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Pas sûr que cela t'aide :
    Code java : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
     
    /*
     * MainFrame.java
     *
     * Created on 19 déc. 2010, 17:26:21
     */
     
    package monPackage;
     
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JFileChooser;
    import javax.swing.JOptionPane;
     
    /**
     *
     * @author 
     */
    public class MainFrame extends javax.swing.JFrame
    {
        private myJFileChooser fc = new myJFileChooser();
     
        /** Creates new form MainFrame */
        public MainFrame()
        {
            Dimension screenSize;
            int H, W;
     
            initComponents();
            fc.searchApproveButton(fc);
     
            screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            H = getBounds().height;
            W = getBounds().width;
            setBounds((screenSize.width-W)/2, (screenSize.height-H)/2, W, H);
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")                     
        private void initComponents() 
    	{
    	}
     
        private void jBtnExportActionPerformed(java.awt.event.ActionEvent evt)                                           
        {                                               
            int response;
            boolean flag;
            String extension = "";
            String fileName = "";
            File file = null, srcFile = null;
            myFileReader myF = new myFileReader();
     
            response = fc.showOpenDialog(this);
            srcFile = fc.getSelectedFile();
     
            flag = true;
            if (srcFile!=null)
            {
                if (srcFile.exists())
                {
                    flag = false;
                }
            }
     
            if (flag)
                return;
     
            flag = true;
            do
            {
                if (response==JFileChooser.APPROVE_OPTION)
                {
                    extension = fc.getSelectedExtension();
                    fileName = fc.removeExtension(srcFile.getPath());
                    file = new File(fileName + extension);
     
                    if (file.exists())
                    {
                        response = JOptionPane.showConfirmDialog(this, "<html>The file "
                                + "<font color='#0000FF'>" + file.getName() + "</font>"
                                + " already exists. Overwrite ?</html>",
                                 "Title", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
                    }
     
                    if (response==JOptionPane.YES_OPTION || response==JFileChooser.APPROVE_OPTION)
                    {                   
                        flag = false;
                        try
                        {
                            myF.readmyFile(srcFile);
                            myF.setOutputFile(file);
                            myF.exportFile(fc.getTitle(), fc.getComments(), fc.getSelectedType());
                            JOptionPane.showMessageDialog(this,
                                "Conversion complete !", "Export file",
                                JOptionPane.INFORMATION_MESSAGE);
                        }
                        catch (IOException ex)
                        {
                            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
                            JOptionPane.showMessageDialog(this,
                                "Error !\n" + ex.getMessage(), "Export file",
                                JOptionPane.WARNING_MESSAGE);
                        }
                    }
     
                }
                else
                {
                    flag = false;
                }
     
            }while (flag);
     
            file = null;
            srcFile = null;
     
        }                                          
     
        private void jBtnQuitActionPerformed(java.awt.event.ActionEvent evt)                                         
        {                                             
            this.dispose();
        }                                        
     
        // Variables declaration - do not modify                     
        private javax.swing.JButton jBtnExport;
        private javax.swing.JButton jBtnQuit;
        // End of variables declaration                   
     
    }

    [edit]
    Le projet consiste à transformer un format de fichier en HTML.
    Difficile de tout envoyer, il y a déjà une dizaine de fichiers.

    L'autre composant "important" est un JFileChooser auquel j'ai ajouté un JPanel.
    [/edit]

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Je crois que j'ai compris la source du problème.

    Ce programme permet de convertir des fichiers binaires en fichier texte. Voici les principales étapes :
    1- L'utilisateur sélectionne le fichier à convertir dans JFileChooser
    2- Après validation, lecture du fichier binaire
    3- Ecriture dans le fichier texte
    4- Fermeture du programme

    Mon exception est levée lorsque je ferme le programme car il semblerait qu'au moment de la fermeture le programme (appel de dispose()) n'a pas fini d'écrire le fichier sur le disque.


    Grosso modo mon programme a cette forme :
    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
     
    PrintWriter pw = new PrintWriter("monFichier.txt", "iso-8859-1");
    // Ecriture dans le fichier texte
    pw.println("...............");
    pw.println("...............");
    (....)
     
    pw.flush();
    pw.close();
     
    JOptionPane.showMessageDialog(this,
                                "Conversion terminée !", "Conversion du fichier",
                                JOptionPane.INFORMATION_MESSAGE);
     
    maFrame.dispose();
    Du coup comment je peux faire pour que java attende la fin des opérations sur le disque ?
    Actuellement j'ai mis un juste après le close, mais ça fait un peu pansement

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

Discussions similaires

  1. Blocage bizarre lorsque je stoppe mon programme
    Par membreComplexe12 dans le forum Qt
    Réponses: 2
    Dernier message: 26/07/2011, 13h26
  2. [Popup][Fermeture] alerter l'utilisateur lorsqu'il quitte
    Par yolepro dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2006, 17h16
  3. Comment garder mes points d'arrets lorsque je quitte VB ?
    Par nico-pyright(c) dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 18/10/2006, 09h17
  4. Réponses: 1
    Dernier message: 04/07/2006, 14h56
  5. Réponses: 4
    Dernier message: 15/05/2006, 14h17

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