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.io.FileNotFoundException - d'où vient le pb?


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut erreur java.io.FileNotFoundException - d'où vient le pb?
    Bonjour,
    Je commence le JAVA avec des Servlets et j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erreur java.io.FileNotFoundException: http://localhost:8080/ProjetJewels/AfficherResultats
    J'essaye de faire afficher un tableau de valeur... mais en vain.
    Aucun de mes fichiers ne me sort d'erreur.
    Ci-dessous "JewelsInWork2", le fichier côté client (l'erreur viendrait de la dernière fonction "Rechercher()":

    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
    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
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
     
    package client;
     
     
    //java Program to create a simple JDialog 
    import java.awt.event.*;
    import java.io.FileInputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.URL;
    import java.net.URLConnection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Vector;
    import java.awt.*;
     
    import javax.servlet.annotation.WebServlet;
    import javax.swing.*;
    import javax.swing.border.EmptyBorder;
     
    import SResultSet.SerializedResultSet; 
     
    @WebServlet("/AfficherResultats")
    class JewelsInWork2 extends JFrame implements ActionListener { 
    	private JPanel contentPane;
    	private JPanel contentStart;
    	private JTextField addPseudo;
    	protected static JewelsInWork2 frame;
    	private static JList listeResultat;
    	private static JTextField valuePseudo;
     
     // frame 
     static JFrame f; 
     static JLabel label;    // member variable
     // main class 
     
        public static void main(String[] args)
        {
            JPanel north = new JPanel();
     
            label = new JLabel();
            label.setHorizontalAlignment(JLabel.CENTER);
     
            JFrame f = new JFrame();
     
            JButton launch = new JButton("Charger");
     
     
    		JLabel labelNewPseudo = new JLabel("Pseudo");
    		labelNewPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    		north.add(labelNewPseudo);
     
    		valuePseudo = new JTextField(16);
            valuePseudo.setColumns(12);
            north.add(valuePseudo);
     
    		JButton boutonRechercher = new JButton("New button");
    		launch.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
               	 JewelsInWork2(); 
               	 Rechercher();
    			}
    		});
     
            north.add(launch);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(north, "North");
            f.getContentPane().add(label, "South");
            f.setSize(300,140);
            f.setLocation(200,200);
            f.setVisible(true);
     
        }
     
    	public static void JewelsInWork2() {
     
    	    // create a object 
    	    JewelsInWork2 MainJewels = new JewelsInWork2(); 
     
    		f = new JFrame("Candy Crush");
     
    		PanelJeu panelJeu = new PanelJeu();
    		panelJeu.setBounds(10, 83, 448, 292);
    		f.add(panelJeu);
    		panelJeu.setLayout(null);
     
    		JPanel panel = new JPanel();
    		panel.setBounds(10, 11, 448, 61);
    		f.add(panel);
    		panel.setLayout(null);
     
     
    		JLabel labelPseudoNew = new JLabel(valuePseudo.getText());
    		labelPseudoNew.setFont(new Font("Tahoma", Font.BOLD, 14));
    		labelPseudoNew.setBounds(10, 11, 222, 23);
    		panel.add(labelPseudoNew);
     
    	    /*
    		JLabel labelPseudo = new JLabel("Pseudo");
    		labelPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    		labelPseudo.setBounds(10, 11, 222, 23);
    		panel.add(labelPseudo); */
     
    		JButton btnMeilleursScores = new JButton("click");
    		btnMeilleursScores.setBounds(303, 11, 135, 23);
    	    // add actionlistener to button 
    	    btnMeilleursScores.addActionListener(MainJewels); 
    		panel.add(btnMeilleursScores);
    		panelJeu.start();
     
     
    	    // set the size of frame 
    	    f.setSize(500, 500); 
     
    	    f.show();
    	}
     
    	JDialog d2;
     
     public void actionPerformed(ActionEvent e) 
     { 
         String MainJewels = e.getActionCommand(); 
         if (MainJewels.equals("click")) { 
        	//Creating a modeless JDialog which doesn't block the 
        	 d2= new JDialog(f,"Les 10 meilleurs scores");
     
     		 listeResultat = new JList();
     		 listeResultat.setBounds(176, 46, 222, 180);
     		 d2.add(listeResultat);
     
        	 d2.pack();
        	 d2.setSize(500,500);
        	 d2.setResizable(false);
        	 d2.setVisible(true);
     
        	 d2.setContentPane(listeResultat);
        	 d2.setLocationRelativeTo(null);
     
         } 
     }
     private static void Rechercher() {
     
    	   String res;
     
    	   String nom=valuePseudo.getText();
     
    	   try
     
    	   {
     
    	    // Connexion à la servlet
     
    	    URL url=new URL("http://localhost:8080/ProjetJewels/AfficherResultats");
     
    	    URLConnection connexion=url.openConnection();
     
    	    connexion.setDoOutput(true);
     
    	    // Récupération du flux de sortie
     
    	    ObjectOutputStream fluxsortie = new ObjectOutputStream(connexion.getOutputStream());
     
    	    // Envoi du nom à rechercher
     
    	    fluxsortie.writeObject(nom);
     
    	   // Récupération du flux d’entrée
     
    	    ObjectInputStream fluxentree = new ObjectInputStream(connexion.getInputStream());
     
    	    // Récupération du résultat de la requête
     
    	    SerializedResultSet donnees=(SerializedResultSet) fluxentree.readObject();
     
    	    // affichage du résultat
     
    	    donnees.first();
     
    	    Vector contenu=new Vector();
     
    	    contenu.clear();
     
    	    listeResultat.setListData(contenu);
     
    	    for (int i=0; i<donnees.recordCount();i++)
     
    	    {
     
    	     res=donnees.getString("nom")+" "+donnees.getString("prenom");
     
    	     contenu.addElement(res);
     
    	     donnees.next();
     
    	    }
     
    	    if (donnees.recordCount()==0)
     
    	     {
     
    	     res="Pas de personne correspondante";
     
    	     contenu.addElement(res);
     
    	     }
     
    	    listeResultat.setListData(contenu);
     
     
     
    	   }
     
    	   catch (Exception sql)
     
    	   {
     
    	    System.out.println("erreur "+sql);
     
    	   }
     
     
    	}
    }
    Puis le fichier AfficherPersonneServlet :
    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
    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
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
     
    package servlets;
     
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
     
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.sql.DataSource;
     
    import SResultSet.SerializedResultSet;
     
    /**
     * Servlet implementation class AfficherPersonneServlet
     */
    @WebServlet("/AfficherResultats")
    public class AfficherPersonneServlet extends HttpServlet {
    	private Connection BD;
    	private DataSource ds;
     
    	private static final long serialVersionUID = 1L;
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public AfficherPersonneServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
             * @see Servlet#init(ServletConfig)
             */
        public void init(ServletConfig config) throws ServletException  {
     
            try {
     
                  System.out.println("Récupération du contexte");
     
                  Context initCtx = new InitialContext();
     
                  System.out.println("lookup de env");
     
                  Context envCtx = (Context) initCtx.lookup("java:comp/env");
     
                  System.out.println("lookup de base_test");
     
                  ds=(DataSource) envCtx.lookup("jdbc/TestDB");
     
                  System.out.println("Datasource chargée");
     
                  }
     
                  catch(Exception er) {
     
                        System.out.println("Erreur de chargement du contexte " + er);
     
                  }
     
         }
     
    	/**
             * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
             */
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
     
        		  throws ServletException, IOException {
     
        		     try {           
     
        		       BD=ds.getConnection();
     
        		       Statement s = BD.createStatement();
     
        		       ResultSet r = s.executeQuery("select * from personne");
     
        		       PrintWriter out=null;
     
        		       response.setContentType("text/html");
     
        		       out = response.getWriter();
     
        		       out.println("<html>");
     
        		       out.println("<head><title> Test servlet </title></head>");
     
        		       out.println("<body>");
     
        		       out.println("Contenu de la table personne <BR>");
     
        		       out.println("<table>");
     
        		       out.println("<TR>");
     
        		       out.println("<TD>Nom</TD>");
     
        		       out.println("<TD>Prénom</TD>");
     
        		       out.println("</TR>");
     
        		       while (r.next()) {
     
        		            out.println("<TR>");
     
        		            out.println("<TD>");
     
        		            out.println(r.getString("nom"));
     
        		            out.println("</TD>");
     
        		            out.println("<TD>");
     
        		            out.println(r.getString("prenom"));
     
        		            out.println("</TD>");
     
        		            out.println("</TR>");
     
        		            }
     
        		       out.println("</table>");
     
        		       out.println("</body>");
     
        		       out.println("</html>");
     
        		       r.close();
     
        		       s.close();
     
        		       BD.close();
     
        		       s = null;
     
        		       r = null;
     
        		     } catch (java.sql.SQLException ex) {
     
        		       System.out.println("Erreur d'exécution de la requête SQL \n"+ex);
     
        		     }
     
        		}
     
    	/**
             * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
             */
    		protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    			String nomPersonne;
     
    			SerializedResultSet sresultat;
     
    			try {             
     
    			   // Récupération du flux d'entrée envoyé par l'applet
     
    			   ObjectInputStream entree=new ObjectInputStream(request.getInputStream());
     
    			   nomPersonne=(String)entree.readObject();
     
    			   // Préparation du flux de sortie
     
    			   ObjectOutputStream sortie=new ObjectOutputStream(response.getOutputStream());
     
    			   // Execution de la requête
     
    			   sresultat=ExecuterRequete(nomPersonne);
     
    			   sresultat.first();
     
    			   // Envoi du résultat au client
     
    			   sortie.writeObject(sresultat);
     
    			   } catch (Exception ex) {
     
    			   System.out.println("Erreur d'exécution de la requête SQL : "+ex);
     
    			   }
     
    			}
     
     
     
    			public SerializedResultSet ExecuterRequete(String nom)
     
    			{
     
    			   try
     
    			   {
     
    			    // Exécution de la requête
     
    			    BD=ds.getConnection();
     
    			    Statement s = BD.createStatement();
     
    			    ResultSet r = s.executeQuery("select * from  personne where nom= '"+nom+"'");
     
    			    // Transformation du ResultSet en sResultSet
     
    			    java.sql.ResultSetMetaData columnNames = r.getMetaData();
     
    			    SResultSet.SerializedResultSet sResultSet = new SResultSet.SerializedResultSet();
     
    			   for (int i = 1; i <= columnNames.getColumnCount(); i++) {
     
    			    sResultSet.addColumn(columnNames.getColumnName(i), i);
     
    			    }
     
    			    while (r.next()) {
     
    			     for (int column = 1; column <= columnNames.getColumnCount(); column++) {
     
    			     sResultSet.addColumnData(column, r.getObject(column));
     
    			     }
     
    			    }
     
     
     
    			    r.close();
     
    			    s.close();
     
    			    BD.close();
     
    			    s = null;
     
    			    r = null;
     
    			    return sResultSet;
     
    			   }
     
    			   catch (java.sql.SQLException ex) {
     
    			     System.out.println("Erreur d'exécution de la requête SQL \n"+ex);
     
    			     return null;
     
    			   }
     
    			}
    }
    J'ai littéralement passé toute ma journée sur cette erreur, si vous avez un proposition je suis preneur.
    Merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    L'erreur est une FileNotFoundException, donc une exception qui concerne un fichier non trouvé, et que le chemin affiché après est une URL http, donc aucun rapport avec un chemin de fichier. Le code que tu montres n'a aucun code qui concerne des fichiers, donc difficile de voir pourquoi, d'autant plus que tes messages d'erreurs sont trop succincts.

    Si tu affichais les stacktraces dans tes blocs catch, tu aurais plus d'informations, avec exactement la ligne de code qui pose problème, et tout le chemin d'invocations de méthodes qui y a conduit...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse.
    Je vérifie toutes mes include de packets etc mais tout semble ok.
    J'ai vérifié l'erreur vient bien la fonction "Rechercher()", c'est ce que retourne mon catch.
    Si quelqu'un a une idée... en attendant je continue de creuser ça.

    Merci d'avance

    EDIT : J'ai créé un projet propre et tout réimporté, cela semble mieux fonctionner.
    Mais j'ai encore une erreur, pareil dans le catch de Rechercher () :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erreur :java.lang.NullPointerException
    Si quelqu'un sait comme je peux faire pour en savoir + (et m'expliquer comment faire) ou qui a carrément vu quelque chose de louche dans mon code à ce propos... merci d'avance

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Une NullPointerException survient lorsqu'on essaye d'invoquer une méthode ou accéder à un attribut d'une référence null (une variable qui vaut null par exemple).
    C'est pareil que ce que j'ai déjà dit : connaître le numéro de ligne exact où l'exception est soulevée est d'une grande aide pour régler le problème. La stacktrace te le donnera.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse, j'ai tenté d'appliquer le stacktrace sur le catch de Rechercher().
    Voici le résultat :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: erreur cote client : java.lang.NullPointerException
    	at client.JewelsInWork2.Rechercher(JewelsInWork2.java:230)
    	at client.JewelsInWork2$1.actionPerformed(JewelsInWork2.java:75)
    	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6632)
    	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    	at java.desktop/java.awt.Component.processEvent(Component.java:6397)
    	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
    	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
    	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
    	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
    	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
    	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762)
    	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    	at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    	at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    La tête de mon catch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	   catch (Exception sql)
     
    	   {
     
    		   throw new IllegalStateException("erreur cote client : "+sql);
     
    	   }
    Merci d'avance

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ton catch masque l'exception initiale. La stacktrace ne sert à rien dans ce cas, parce qu'elle ne donne rien de plus que l'endroit où tu catches l'exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    catch (Exception sql) {
     
    		   throw new IllegalStateException("erreur cote client",sql);
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Peux tu m'expliquer clairement ce que tu veux?
    Tu as tout mon code, j'ai essayé d'appliquer ce que tu m'as dis, si ça ne va pas peux tu me montrer comment bien l'utiliser? je n'arriverai pas à faire mieux seul
    Utilise mon code et integre ton idée de stack trace stp merci

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je t'ai répondu on ne peut plus clairement ce que tu dois faire :

    1. dans les blocs catch, ne pas afficher une exception avec un System.out.println, mais affiche la stacktrace.
      Donc pas de :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      System.out.println("erreur "+sql);
      mais
    2. Si tu veux renvoyer l'erreur, pour transformer en unchecked-exception (IllegalStateException, ou RuntimeException, ou autre), avec un throw :
      Pas de
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      throw new RuntimeException("blabla "+exception);
      mais
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      throw new RuntimeException("blabla", exception);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Ah excuse moi je n'avais pas bien vu.
    La ligne pointée semble être la 196 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Caused by: java.lang.NullPointerException
    	at client.JewelsInWork2.Rechercher(JewelsInWork2.java:196)
    	... 36 more
    Soit la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	    listeResultat.setListData(contenu);
    Je te remets le code complet de ce fichier pour que tu n'ais tous les éléments dans cette même réponse :
    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
    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
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
     
    package client;
     
     
    //java Program to create a simple JDialog 
     
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.URL;
    import java.net.URLConnection;
     
    import java.util.Vector;
    import java.awt.*;
     
    import javax.servlet.annotation.WebServlet;
    import javax.swing.*;
     
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    import SResultSet.SerializedResultSet;
     
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import javax.swing.JList;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
     
     
    class JewelsInWork2 extends JFrame implements ActionListener { 
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	protected static JewelsInWork2 frame;
    	private static JList listeResultat;
    	private static JTextField valuePseudo;
     
     // frame 
     static JFrame f; 
     static JLabel label;    // member variable
     // main class 
     
        public static void main(String[] args)
        {
     
     
     
            //NEW
            JDialog d = new JDialog(f, "dialog Box"); 
            JPanel north = new JPanel();
     
            // create a label 
            label = new JLabel();
            label.setHorizontalAlignment(JLabel.CENTER);
            north.add(label); 
     
       		JLabel labelNewPseudo = new JLabel("Pseudo");
       		labelNewPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
       		north.add(labelNewPseudo);
     
    		valuePseudo = new JTextField(16);
            valuePseudo.setColumns(12);
            north.add(valuePseudo);
     
            JButton launch = new JButton("Charger");
            north.add(launch);
     
    		//JButton boutonRechercher = new JButton("New button");
    		launch.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
               	 JewelsInWork2(); 
               	 Rechercher();
    			}
    		});
            d.getContentPane().add(north, "North");
            // setsize of dialog 
            d.setSize(300, 250); 
            d.setLocation(200,200);
     
            // set visibility of dialog 
            d.setVisible(true); 
        }
     
    	public static void JewelsInWork2() {
     
    	    // create a object 
    	    JewelsInWork2 MainJewels = new JewelsInWork2(); 
     
    		f = new JFrame("Candy Crush");
     
    		PanelJeu panelJeu = new PanelJeu();
    		panelJeu.setBounds(10, 83, 448, 292);
    		f.add(panelJeu);
    		panelJeu.setLayout(null);
     
    		JPanel panel = new JPanel();
    		panel.setBounds(10, 11, 448, 61);
    		f.add(panel);
    		panel.setLayout(null);
     
     
    		JLabel labelPseudoNew = new JLabel(valuePseudo.getText());
    		labelPseudoNew.setFont(new Font("Tahoma", Font.BOLD, 14));
    		labelPseudoNew.setBounds(10, 11, 222, 23);
    		panel.add(labelPseudoNew);
     
    	    /*
    		JLabel labelPseudo = new JLabel("Pseudo");
    		labelPseudo.setFont(new Font("Tahoma", Font.BOLD, 14));
    		labelPseudo.setBounds(10, 11, 222, 23);
    		panel.add(labelPseudo); */
     
    		JButton btnMeilleursScores = new JButton("click");
    		btnMeilleursScores.setBounds(303, 11, 135, 23);
    	    // add actionlistener to button 
    	    btnMeilleursScores.addActionListener(MainJewels); 
    		panel.add(btnMeilleursScores);
    		panelJeu.start();
     
     
    	    // set the size of frame 
    	    f.setSize(500, 500); 
     
    	    f.show();
    	}
     
    	JDialog d2;
     
     public void actionPerformed(ActionEvent e) 
     { 
         String MainJewels = e.getActionCommand(); 
         if (MainJewels.equals("click")) { 
        	//Creating a modeless JDialog which doesn't block the 
        	 d2= new JDialog(f,"Les 10 meilleurs scores");
     
     		 listeResultat = new JList();
     		 listeResultat.setBounds(176, 46, 222, 180);
     		 d2.add(listeResultat);
     
        	 d2.pack();
        	 d2.setSize(500,500);
        	 d2.setResizable(false);
        	 d2.setVisible(true);
     
        	 d2.setContentPane(listeResultat);
        	 d2.setLocationRelativeTo(null);
     
     
         } 
     }
     private static void Rechercher() {
     
    	   String res;
     
    	   String nom=valuePseudo.getText();
     
    	   try
     
    	   {
     
    	    // Connexion à la servlet
     
    		URL url=new URL("http://localhost:8080/ProjetJewels/AfficherResultat");
     
    	    URLConnection connexion=url.openConnection();
     
    	    connexion.setDoOutput(true);
     
    	    // Récupération du flux de sortie
     
    	    ObjectOutputStream fluxsortie = new ObjectOutputStream(connexion.getOutputStream());
     
    	    // Envoi du nom à rechercher
     
    	    fluxsortie.writeObject(nom);
     
    	   // Récupération du flux d’entrée
     
    	    ObjectInputStream fluxentree = new ObjectInputStream(connexion.getInputStream());
     
    	    // Récupération du résultat de la requête
     
    	    SerializedResultSet donnees=(SerializedResultSet) fluxentree.readObject();
     
    	    // affichage du résultat
     
    	    donnees.first();
     
    	    Vector contenu=new Vector();
     
    	    contenu.clear();
     
    	    listeResultat.setListData(contenu);
     
    	    for (int i=0; i<donnees.recordCount();i++)
     
    	    {
     
    	     res=donnees.getString("nom")+" "+donnees.getString("prenom");
     
    	     contenu.addElement(res);
     
    	     donnees.next();
     
    	    }
     
    	    if (donnees.recordCount()==0)
     
    	     {
     
    	     res="Pas de personne correspondante";
     
    	     contenu.addElement(res);
     
    	     }
     
    	    listeResultat.setListData(contenu);
     
     
     
    	   }
     
    	   catch (Exception sql)
     
    	   {
     
    		   throw new IllegalStateException("erreur cote client : " , sql);
     
    	   }
     
     
    	}
    }
    Merci d'avance

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Zarkoffe Voir le message
    Soit la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	    listeResultat.setListData(contenu);
    Donc il n'y a aucune hésitation : c'est listeResultat qui est null. En regardant le code, on voit que la seule initialisation de cette attribut static est là :
    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
    if (MainJewels.equals("click")) { 
        	//Creating a modeless JDialog which doesn't block the 
        	 d2= new JDialog(f,"Les 10 meilleurs scores");
    
     		 listeResultat = new JList();
     		 listeResultat.setBounds(176, 46, 222, 180);
     		 d2.add(listeResultat);
     		
        	 d2.pack();
        	 d2.setSize(500,500);
        	 d2.setResizable(false);
        	 d2.setVisible(true);
        	 
        	 d2.setContentPane(listeResultat);
        	 d2.setLocationRelativeTo(null);
    
        	 
         }
    Ce code à priori est censé s'exécuter lorsqu'on "click" sur un truc (plus exactement quand une action est déclenchée et que sa commande est "click", sa commande pas son texte !). Donc déjà, c'est problématique : ça veut dire qu'il faut faire les actions dans un certain ordre pour que ça fonctionne (cliquer sur je ne sais quoi avant de lancer une recherche). Mais en plus, il n'y a aucun composant qui a une action de commande "click" (invocation de setActionCommand, ou setAction, sur un JButton par exemple), donc ça ne risque pas de s'exécuter.
    Il faut de toute manière éviter d'avoir à forcer l'utilisateur à cliquer sur des boutons dans un ordre particulier, ou alors on le gère (par exemple on empêche l'utilisateur de cliquer sur un bouton avant qu'il ait fait certaines actions (on peut utiliser setEnabled(true/false) sur un JButton pur l'activer ou pas, ou sur son action).

    On s'arrange aussi pour que toutes l'ui soit prête dès le début : on évite de créer des composants dans des ActionListener. On les créé d'avance, vides, on peut les cacher, et on les remplit au bon moment, et on les affiche, on les active, etc.
    Pour les cacher, on peut les rendre invisible, ou utiliser des layouts adaptés (comme un CardLayout par exemple).
    Mais tout ça, ça dépend vraiment de comment tu veux articuler ton application.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse complète.
    On s'arrange aussi pour que toutes l'ui soit prête dès le début : on évite de créer des composants dans des ActionListener.
    Je trouve ça curieux de résonner ainsi, pour moi je ne fais charger du coté du client que ce dont j'ai besoin, mais bon je n'y connais pas grand chose dans ce langage, alors je vais suivre ta voie.

    Il faut de toute manière éviter d'avoir à forcer l'utilisateur à cliquer sur des boutons dans un ordre particulier, ou alors on le gère
    Dans mon programme il n'y a pas de problème là dessus, tant qu'il n'a pas cliqué sur le bouton, la fenêtre ne se chargera pas.

    il n'y a aucun composant qui a une action de commande "click", donc ça ne risque pas de s'exécuter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JButton btnMeilleursScores = new JButton("click");
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (MainJewels.equals("click"))
    C'est faux : Si je change le nom du bouton, ma fenêtre ne se charge pas. En cliquant sur ce bouton en laissant "click", ma JDialog se charge bien, donc l'action s'est bien déclenchée à coup sûr! Donc c'est que l'action est bien exécutée. Mais le fenêtre est vide, et dans la console on a l'erreur dont on parle depuis le début.
    Nom : bbbbb.png
Affichages : 818
Taille : 38,2 Ko

    Toutes mes fenêtres s'affichent dans le bon ordre, je charge mes 2 fonctions après le clique du bouton dans le main car je veux le faire à ce moment là. Mon seul problème est la dernière fenêtre qui utilise cette fonction Rechercher();.
    Quand mon utilisateur clique sur "click", la liste est déjà chargée depuis la fenêtre précédente!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		launch.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
               	 JewelsInWork2(); 
               	 Rechercher();
    			}
    		});
    Et c'est là que j'ai mon erreur, avant même d'avoir cliqué sur "click".
    Très concrètement, je dois faire quoi avec "listeResultat = new JList();" ? Il est déjà initialisé, toutes les actions s’exécutent dans le bon ordre, et comme je le veux (et j'en ai chier pendant une 10ène d'heures pour avoir ce résultat).

    Merci d'avance

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Zarkoffe Voir le message
    Je trouve ça curieux de résonner ainsi, pour moi je ne fais charger du coté du client que ce dont j'ai besoin, mais bon je n'y connais pas grand chose dans ce langage, alors je vais suivre ta voie.
    Je ne parle pas de charger des données inutiles. Je ne parle que de construire l'interface. Faire une interface variable (avec des composants qui s'ajoutent, s'enlèvent, etc) est possible, mais il faut le gérer finement (relayouter et repeindre quand nécessaire, gérer les effets de bords, et surtout prendre en compte que les composants n'existent pas forcément tout le temps (donc gérer les variables de valeur null, gérer correctement la disponibilité des menus, boutons, etc).

    Citation Envoyé par Zarkoffe Voir le message
    Dans mon programme il n'y a pas de problème là dessus, tant qu'il n'a pas cliqué sur le bouton, la fenêtre ne se chargera pas.
    Oui, m'enfin, visiblement tu obtiens une erreur NullPointerException à un moment, puisque tu en parles...

    Citation Envoyé par Zarkoffe Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JButton btnMeilleursScores = new JButton("click");
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (MainJewels.equals("click"))
    C'est faux : Si je change le nom du bouton, ma fenêtre ne se charge pas. En cliquant sur ce bouton en laissant "click", ma JDialog se charge bien, donc l'action s'est bien déclenchée à coup sûr! Donc c'est que l'action est bien exécutée. Mais le fenêtre est vide, et dans la console on a l'erreur dont on parle depuis le début.
    Ah oui parce que ça utilise le texte du bouton par défaut dans un ActionListener.

    Menfin tu utilises le même nom de variables pour différents trucs, donc ton code est difficile à comprendre. MainJewels un coup c'est une instance de JewelsInWork2 (une JFrame), un coup c'est une commande d'action, un coup c'est utilisé comme ActionListener. On utilise des noms de variables qui ont un sens et on ne mélange pas les concepts. Et je ne parle pas du reste de l'archi globale et du reste (indentation en particulier). Ton code, c'est l'enfer à lire et à comprendre.

    Le texte d'un JButton, ce n'est ni son nom, si le nom de sa commande. C'est le texte qui s'affiche dans le bouton à l'écran. new JButton("click") ça créé un bouton de texte "click". Même si Swing utiliser par défaut le texte du bouton comme commande, c'est vraiment pas une bonne idée de compter la dessus (justement ça veut dire que si tu changes le texte du bouton, y'a plus rien qui marche). C'est plus difficile à démerder comme code. C'est quand on compte sur que le code tombe en marche par défaut qu'on obtient des trucs qui ne fonctionnent pas par défaut aussi.


    Citation Envoyé par Zarkoffe Voir le message

    Toutes mes fenêtres s'affichent dans le bon ordre, je charge mes 2 fonctions après le clique du bouton dans le main car je veux le faire à ce moment là.
    Bah on sont fout un peu de l'ordre des fenêtres. Moi je te dis que la NullPointerException se déclenche parce listeResultat est null. Et il est null, parce que pour qu'il ne le soit pas, il faut que l'action du bouton de texte "click" ait déjà été déclenchée pour qu'elle ne le soit pas avant qu'on lance une recherche.

    Donc concrètement :
    1. soit tu fais que listResultat ne soit pas null quand on lance la recherche (ou que lancer une recherche fasse ce qu'il faut pour que ça soit pas null)
    2. soit tu t'arranges pour qu'on ne puisse pas lancer la recherche quand il est null (avec l'état enabled du bouton)
    3. soit tu prends en compte qu'il puisse l'être (if ( listResultat!=null ) {)...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci c'est parfait je l'ai appelé + tôt et plus de soucis.
    Je prends en compte l'ensemble de tes remarques pour mes futurs appli JAVA Merci beaucoup pour tes explications et ton temps, bonne semaine

    Sujet résolu

Discussions similaires

  1. [JAR] Erreur java.io.FileNotFoundException
    Par DAnte123 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/12/2018, 17h45
  2. Réponses: 4
    Dernier message: 07/03/2012, 12h08
  3. Erreur "java.io.FileNotFoundException" sous XP
    Par polymorphisme dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/03/2012, 12h54
  4. Réponses: 8
    Dernier message: 09/11/2010, 12h59
  5. Erreur : java.io.FileNotFoundException
    Par dg_dev dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 09/01/2009, 17h56

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