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 :

Erreur "Unknown source"


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut Erreur "Unknown source"
    Bonjour,

    En java 1.6.0_24, j'ai l'erreur suivante :
    java.lang.NullPointerException
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at src.creatotot.CreatototTransfPrestation.<init>(CreatototTransfPrestat
    ion.java:117)
    at src.crearncps.CreatototActionPanel$1.actionPerformed(CreatototActionP
    anel.java:208)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
    ce)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
    Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
    Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown
    Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    dans mon code l'erreur ligne 117 est en rouge
    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
    ...
                statement =con.createStatement();
     
                for (int l = 0; l <= data2.getRowCount()-1; l++){
                    statement.executeUpdate("INSERT INTO `totottemp`.`prestation` " +
                        "(`id` ,`coderisque` ,`groupeprestation` ,`sousgroupeprestation` ,`qualitebeneficiaire` " +
                        ",`etatdroitprestation`,`dateetat`,`motifetat`,`dateouverturedroits` " +
                        ",`datemaj`,`doublerattachement`,`adressagesi`) " +
                        "VALUES ('" + data2.getValueAt(l,0) + 
                        "', '" + data2.getValueAt(l,2) +
                        "', '" + data2.getValueAt(l,3) +
                        "', '" + data2.getValueAt(l,4) +
                        "', '" + data2.getValueAt(l,5) +
                        "', '" + data2.getValueAt(l,6) +
                        "', '" + data2.getValueAt(l,7) +
                        "', CASE '" + data2.getValueAt(l,8) + "' WHEN 'null' THEN " + null + " ELSE '" + data2.getValueAt(l,8) + "' END" +
                        ", '" + data2.getValueAt(l,9) +
                        "', '" + data2.getValueAt(l,10) +
                        "', '" + data2.getValueAt(l,11) +
                        "', '" + data2.getValueAt(l,1) + 
                    "')");
                }
     
                con.commit();
                con.setAutoCommit(false);
            }
            catch (Exception e){
                System.out.println(e);
            }
            finally {
                try {
                    resultat2.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    statement.close();
            } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    statement2.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.
    # Do NOT simply read the instructions in here without understanding
    # what they do. They're here only as hints or reminders. If you are unsure
    # consult the online docs. You have been warned.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Si c'est vraiment cette ligne-là y a pas trop le choix, statement est null.

    Ça devrait arriver, sans doute si la ligne statement =con.createStatement(); échoue et lance une Exception : dans ce cas on arrive dans le catch puis dans le finally, qui cherche à close() un objet null.

    con.createStatement peut échouer par exemple si con est null, ou a été close(), ou est dans un autre état invalide.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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,


    Il s'agit de détail qu'on peut regler facilement avec le pattern du try/finally :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	// 1. On ouvre la ressource :
    	final Statement statement = con.createStatement();
    	// 2. On débute immédiatement après un bloc try/finally :
    	try {
    		// 3. On fait les traitements sur la ressource :
    		...
    	} finally {
    		// 4. On libère la ressource dans le finally
    		statement.close();
    	}

    Avec autant de try/finally que de ressources. Donc si on a plusieurs ressources on empile plusieurs try/finally.

    Et si on doit gérer les exceptions, on utilise un grand try/catch qui englobe le tout (y compris les try/finally), et non pas plusieurs petit try/catch qui ne servent à rien sauf à se retrouver dans un état incorrect...


    A noter qu'avec Java 7 on peut utiliser le try-with-ressources qui gère cela à notre place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	try ( Statement statement = con.createStatement() ) {
    		// On fait les traitement sur la ressource :
    		...
    	}

    a++

  4. #4
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    Merci pour votre réponse

    C'est effectivement la ligne 117 qui provoque l'erreur.

    L'application a marché le mois dernier (comme chaque mois depuis 2 ans) et le jar n'a pas changé: Ce serait l'INSERT qui cloche et les datas seraient en cause.
    Je vais chercher le sqlcode au moment du statement.

    Mon admin réseau me dit que "AWT-EventQueue-0" est parfois lié à des problèmes de droits ou autorisations.

    je continu à chercher...
    # Do NOT simply read the instructions in here without understanding
    # what they do. They're here only as hints or reminders. If you are unsure
    # consult the online docs. You have been warned.

  5. #5
    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
    Citation Envoyé par POKOU Voir le message
    Mon admin réseau me dit que "AWT-EventQueue-0" est parfois lié à des problèmes de droits ou autorisations.
    Non "AWT-EventQueue-0" correspond seulement au nom du thread. Et cela correspond au thread de l'EDT.

    C'est pas bien car cela signifie que ton traitement bloque l'interface graphique lorsqu'il est trop long... mais cela ne pose aucun problème de droits...



    Ton premier problème c'est surtout ton catch inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	catch (Exception e){
    		System.out.println(e);
    	}
    Bref tu affiches seulement le nom de l'exception et pas le détail.
    Le genre de chose que l'on ne repère pas facilement pas dans un log...

    De plus si tu n'arrives pas à créer le statement, tu tentes quand même de le fermer, d'où NullPointerException...



    Bref il serait utile de revoir tout cela :
    - Avec une gestion des ressources (avec des try/finally ou try-with-ressource si Java 7)
    - Avec une gestion des exceptions propres (cad pas de try/catch tous les 2 lignes de codes)

    Et pour faire propre, ce serait bien de faire cela en dehors de l'EDT (via SwingWorker par exemple), mais cela risque d'être un peu plus long...


    a++

  6. #6
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    Merci pour vos conseils

    Bon ce qui plantait c’était les datas (un gars né en 1914 et mort en 1912 ).
    Ceci dit, je m'explique pas trop pourquoi cela faisait planter l'INSERT de mon Statement : surement des contraintes entre les tables.
    Je l'ai rekillé une deuxième fois et ça passe

    Maintenant grâce à adiGuba je vais nettoyer mon code : bonne gestion des ressources, bonne gestion des exceptions, le tout un peu dans le style poupées russes d'XML.

    l'erreur d’interprétation de "AWT-EventQueue-0" vient qu'ici on a on logiciel métier et on voit parfois ce nom dans les logs.

    enfin, je dirais que déjà swing ça me casse les pieds, alors j'ai pas trop envie de me lancer dans SwingWorker. Et puis je vais me renseigner sur EDT que je ne comprend pas trop.

    à +
    # Do NOT simply read the instructions in here without understanding
    # what they do. They're here only as hints or reminders. If you are unsure
    # consult the online docs. You have been warned.

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

Discussions similaires

  1. erreur java (unknown source)
    Par jpclutier dans le forum Général Java
    Réponses: 5
    Dernier message: 15/12/2010, 15h02
  2. Erreur from Unknown Source (table)
    Par Lady dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/06/2008, 14h46
  3. erreur unknown source
    Par Methode dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 13/11/2007, 19h27

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