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 java.lang.NullPointerException


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut Erreur JAVA java.lang.NullPointerException
    Bonjour,

    En débugant mon application Java je tombe sur deux exceptions dont voici les sorties console :

    java.lang.NullPointerException
    at Calcul.CalculPend(Calcul.java:566)
    at Confirmation.Confirmation1(Confirmation.java:40)
    at MDIMenu.mnuTraiPendulage_Click(MDIMenu.java:2807)

    et le code impacté :

    CalculPend() dans Calcul.java
    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
     
    static void CalculPend() throws Exception
    {
          ....
     
          if( (Pend.getMDIMenu().mnuCompProtege.isSelected() == true) && (Variable.ca > Variable.lg1) && (Variable.ca < (Variable.Portee - Variable.lg2)) )
          {
     
            if( Variable.Entrax[Variable.j] >= Variable.EtxBasculePendule )
            {
     
              if( Pend.getFrmParPend().OptJT[0].isSelected() == true )
              {
                Variable.PendulesPortee[4][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[4][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
              }
              else if( Pend.getFrmParPend().OptJT[1].isSelected() == true )
              {
                Variable.PendulesPortee[5][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[5][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
              }
     
            }
            else
            {
              Variable.PendulesPortee[3][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[3][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
            }
     
          }
          else
          {
     
            if( Variable.Entrax[Variable.j] >= Variable.EtxBasculePendule )
            {
              Variable.PendulesPortee[1][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[1][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
            }
            else
            {
              Variable.PendulesPortee[2][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[2][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() ); ==>> Ligne 566
            }
     
          }............
    Confirmation1() dans Confirmation.java
    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
     
    Static void Confirmation1() throws Exception
    {
        if( (Pend.getMDIMenu().mnuCompProtege.isSelected() == true) && (Pend.getMDIMenu().mnuCompOuvrage.isSelected() == false) )
        {
          if( Variable.Passer == 0 )
          {
            Pend.getFrmConf().showForm();
          }
          else
          {
            if( Variable.ProtOk == 0 )
            {
              Application.getCurrent().unload( Pend.getfrmPorteurProtégé() );
              Pend.getMDIMenu().mnuCompProtege.setSelected( false );
              Calcul.CalculPend();
            }
            else
            {
              if( Variable.MinoOk == 0 )
              {
                Pend.getFrmParPend().showForm();
              }
              else
              {
                Calcul.CalculPend();
              }
            }
          }
        }
        else
        {
          if( Pend.getMDIMenu().mnuCompOuvrage.isSelected() == false )
          {
            Calcul.CalculPend(); ==>> Ligne 40
          }
        }.........
    mnuTraiPendulage_Click() dans MDIMenu.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      private void mnuTraiPendulage_Click()
      {
        try
        {
          Confirmation.Confirmation1(); ==>> Ligne 2807
        }
        catch(Exception _e_) { Err.set(_e_,"mnuTraiPendulage_Click"); }
      }
    Si vous avez besoin de précisions sur le code je suis prêt à les fournir

  2. #2
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    Juste un petit conseil.
    Il faut que ton code soit plus lisible, car la avec tes noms de méthodes, d'attributs... qui ne veulent rien dire il n'est pas évident de savoir ce que ton code fait.

    Il faut que tes noms de méthodes soient mieux choisis par exemple s'occupe de parser un fichier et d'en récupérer une ligne ne mets pas ParsFicRecLig mais plutôt ParseFichierEtRecupereLigne ce sera beaucoup mieux pour toi. Si tu dois relire ton code dans 6 mois tu sauras ce que ton code fait!

  3. #3
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Citation Envoyé par youness78 Voir le message
    Bonjour,

    En débugant mon application Java je tombe sur deux exceptions dont voici les sorties console :

    java.lang.NullPointerException
    at Calcul.CalculPend(Calcul.java:566)
    at Confirmation.Confirmation1(Confirmation.java:40)
    at MDIMenu.mnuTraiPendulage_Click(MDIMenu.java:2807)

    et le code impacté :

    CalculPend() dans Calcul.java
    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
     
    static void CalculPend() throws Exception
    {
          ....
     
          if( (Pend.getMDIMenu().mnuCompProtege.isSelected() == true) && (Variable.ca > Variable.lg1) && (Variable.ca < (Variable.Portee - Variable.lg2)) )
          {
     
            if( Variable.Entrax[Variable.j] >= Variable.EtxBasculePendule )
            {
     
              if( Pend.getFrmParPend().OptJT[0].isSelected() == true )
              {
                Variable.PendulesPortee[4][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[4][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
              }
              else if( Pend.getFrmParPend().OptJT[1].isSelected() == true )
              {
                Variable.PendulesPortee[5][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[5][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
              }
     
            }
            else
            {
              Variable.PendulesPortee[3][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[3][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
            }
     
          }
          else
          {
     
            if( Variable.Entrax[Variable.j] >= Variable.EtxBasculePendule )
            {
              Variable.PendulesPortee[1][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[1][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() );
            }
            else
            {
              Variable.PendulesPortee[2][(int)Math.rint( Variable.long1 )] = Variable.PendulesPortee[2][(int)Math.rint( Variable.long1 )] + Obj.toDouble( Pend.getfrmComptage().TxtNombre.getText() ); ==>> Ligne 566
            }
     
          }............
    Confirmation1() dans Confirmation.java
    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
     
    Static void Confirmation1() throws Exception
    {
        if( (Pend.getMDIMenu().mnuCompProtege.isSelected() == true) && (Pend.getMDIMenu().mnuCompOuvrage.isSelected() == false) )
        {
          if( Variable.Passer == 0 )
          {
            Pend.getFrmConf().showForm();
          }
          else
          {
            if( Variable.ProtOk == 0 )
            {
              Application.getCurrent().unload( Pend.getfrmPorteurProtégé() );
              Pend.getMDIMenu().mnuCompProtege.setSelected( false );
              Calcul.CalculPend();
            }
            else
            {
              if( Variable.MinoOk == 0 )
              {
                Pend.getFrmParPend().showForm();
              }
              else
              {
                Calcul.CalculPend();
              }
            }
          }
        }
        else
        {
          if( Pend.getMDIMenu().mnuCompOuvrage.isSelected() == false )
          {
            Calcul.CalculPend(); ==>> Ligne 40
          }
        }.........
    mnuTraiPendulage_Click() dans MDIMenu.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      private void mnuTraiPendulage_Click()
      {
        try
        {
          Confirmation.Confirmation1(); ==>> Ligne 2807
        }
        catch(Exception _e_) { Err.set(_e_,"mnuTraiPendulage_Click"); }
      }
    Si vous avez besoin de précisions sur le code je suis prêt à les fournir
    En gros tu amplique une methode sur un objet null. Il te faut instancier ton objet avant de pouvoir l'utiliser. Je sais pas a quoi correspond ta ligne 566 mais avec un IDE tu dois certainement mettre un "point d'arret" et voir quelle variable est null.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    un bon conseil si tu veux qu'on puisse lire ton code et t'aider à trouver des solutions, respecte un minimum les recommendation d'écriture de code java. Quand ce lit ce code:

    pour moi tu appelle la méthode statique getMDIMenu() sur la classe Pend. De même quand je lit ça:
    tu accède à la inner class MinoOk de la classe Variable. Quand je lit ton code, j'arrive pas à faire la différence entre les noms des variables, les champs et les noms de classes.

    Tes variables, tes noms de champs et tes noms de méthodes, en java, doivent toujours commencer par une minuscule. On les écrit en fait en "lowerCamelCase", si tu vois de quoi il s'agit. La majuscule en début de nom est réservée aux noms de classe. Et les constantes s'écrivent entièrement en majuscule.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 03/12/2008, 17h35
  2. erreur de java.lang.NullPointerException
    Par vince351 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 12h29
  3. [Débutant] Erreur java.lang.NullPointerException
    Par Kevin12 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/02/2007, 15h48
  4. Probleme erreur java.lang.NullPointerException
    Par Tsukaasa dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2006, 18h19

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