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

Langage Java Discussion :

Erreur execution Java : java.lang.NullPointerException


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Erreur execution Java : java.lang.NullPointerException
    bonjour,
    comme l'indique le titre, j'ai une erreur d'execution : java.lang.NullPointerException

    Voiçi les morceaux de codes d'où viendrait le pb :

    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
    public class TesteurSansTransformation {
     
        public IFigureFactory factory;
     
        public TesteurSansTransformation(IFigureFactory factory) {
            this.factory = factory;
        }
     
        public IFigure pleinDeIPoints(int nbr) {
            IFigureComposee res = this.factory.nouvelleFigureComposeeVide();
            for (int i = 0; i < nbr; i++) {
                IPoint p = this.factory.nouveauPoint(Math.random(), Math.random());
                res.ajouteSousFigure(p);
            }
            return res;
     
        }
     
        public IFigure pleinDeIPoints(int nbr) {
            IFigureComposee res = this.factory.nouvelleFigureComposeeVide();
            for (int i = 0; i < nbr; i++) {
                IPoint p = this.factory.nouveauPoint(Math.random(), Math.random());
                res.ajouteSousFigure(p);
            }
            return res;
     
        }
    }
    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
    import java.util.ArrayList;
     
     
    public class FigureComposee implements IFigureComposee {
     
        public ArrayList <IFigure> figs;
     
        public FigureComposee() {
            this.figs = new ArrayList <IFigure>();
        }
     
        public void ajouteSousFigure(IFigure sousFig) {
            this.figs.add(sousFig);
        }
    // ...etc...}
    java renvoie cette erreur :
    init:
    deps-jar:
    compile-single:
    run-single:
    Exception in thread "main" java.lang.NullPointerException
    at fr.****.geo2d.FigureComposee.ajouteSousFigure(FigureComposee.java:23)
    at fr.****.tps.m2.dessin2DV1.test.TesteurSansTransformation.pleinDeIPoints(TesteurSansTransformation.java:34)
    at fr.****.tps.m2.dessin2DV1.test.TesteurSansTransformation.testPrincipal(TesteurSansTransformation.java:105)
    at fr.****.geo2d.TestFdB.main(TestFdB.java:19)



    Donc l'erreur viendrait de ajouteSousFigure()
    où est le pb ? Comment le résoudre ? je ne vous pas d'où vient cette erreur.
    merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    A première vue, l'erreur ne vient pas de la classe FigureComposee car la list est bien initialisée dans le constructeur.

    L'erreur viendrait plutôt de la classe IFigureFactory.

    Car c'est elle qui créer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IFigureComposee res = this.factory.nouvelleFigureComposeeVide();
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IPoint p = this.factory.nouveauPoint(Math.random(), Math.random());
    Pour avoir un NullPointerException il faut que res ou p soit à null.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je te remercie de ton aide.

    Voiçi le morceau du FigureFactory qui poserait donc pb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class FigureFactory implements IFigureFactory {
     
        public IPoint nouveauPoint(double x, double y) {
            return new Point(x, y);
        }
        public IFigureComposee nouvelleFigureComposeeVide() { 
            return new FigureComposee();
        }
    ....etc...}
    Tu trouves une erreur ou tout est ok ?
    Je comprend vraiment rien de ces erreurs null et tout, ça me dépasse pour le moment. En tout cas merci de ton aide.

  4. #4
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    si l'erreur est à cette ligne, je ne vois que la variable 'figs' qui pourrait être null.
    Essaye d'ajouter un texte, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( this.figs != null ){...}
    Hope it helps !
    Nouveau ! Il y a une vie après le java, oxygénez-vous

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, une NullPointerException n'est pas une erreur de compilation mais une erreur d'exécution.

    Es-tu sûr que la trace que tu donnes dans le 1er message est complète? car si on s'y réfère, l'erreur survient à la ligne 23 de FigureComposee.java. Or sur cette ligne, il n'y a que figs qui pourrait être null, sauf que cet attribut est initialisé dans ton constructeur.
    Il y donc quelque chose qui cloche. Pourrais-tu poster la classe FigureComposee en entier?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    oui la trace du 1er message est complete
    voiçi la classe FigureComposee :

    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
    package fr.****.geo2d;
     
    import fr.****.tps.m2.dessin2DV1.api.IFigure;
    import fr.****.tps.m2.dessin2DV1.api.IFigureComposee;
    import java.awt.Graphics2D;
    import java.awt.geom.AffineTransform;
    import java.util.ArrayList;
     
    /**
     *
     * @author ilym
     */
    public class FigureComposee implements IFigureComposee {
     
        public ArrayList <IFigure> figs;
     
        public FigureComposee() {
            this.figs = new ArrayList <IFigure>();
        }
     
        public void ajouteSousFigure(IFigure sousFig) {
            this.figs.add(sousFig);
        }
     
        public void supprimeSousFigure(IFigure sousFig) {
            this.figs.remove(sousFig);
        }
     
        public double maxX() {
            double max = 0;
            if (this.figs.size() > 0) max = this.figs.get(0).maxX();
            for(int i = 0; i < this.figs.size(); i++) max = Math.max(this.figs.get(i).maxX(), max) ;
            return max;
        }
     
        public double minX() {
            double min = 0;
            if (this.figs.size() > 0) min = this.figs.get(0).minX();
            for(int i = 0; i < this.figs.size(); i++) min = Math.min(this.figs.get(i).minX(), min) ;
            return min;
        }
     
        public double maxY() {
            double max = 0;
            if (this.figs.size() > 0) max = this.figs.get(0).maxY();
            for(int i = 0; i < this.figs.size(); i++) max = Math.max(this.figs.get(i).maxY(), max) ;
            return max;
        }
     
        public double minY() {
            double min = 0;
            if (this.figs.size() > 0) min = this.figs.get(0).minY();
            for(int i = 0; i < this.figs.size(); i++) min = Math.min(this.figs.get(i).minY(), min) ;
            return min;
        }
     
        public void dessine(Graphics2D g, AffineTransform trans) {
            for(int i = 0; i < this.figs.size(); i++) this.figs.get(i).dessine(g, trans); 
        }
     
    }

  7. #7
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    As-tu essayé de tester ta variable 'figs' ?
    Hope it helps !
    Nouveau ! Il y a une vie après le java, oxygénez-vous

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    comment ça tester ?

  9. #9
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( this.figs != null ){...}
    tu testes et tu mets le résultat sur la console ou dans une boîte de dialogue, ça t'aidera à cerner le problème !
    Hope it helps !
    Nouveau ! Il y a une vie après le java, oxygénez-vous

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    il faudrait le mettre où ?

  11. #11
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Par exemple ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public void ajouteSousFigure(IFigure sousFig) 
    {
     if( this.figs != null )
     { 
      this.figs.add(sousFig)
     }
    else
    { 
      System.out.println("valeur nulle");
    }
    }
    Hope it helps !
    Nouveau ! Il y a une vie après le java, oxygénez-vous

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    non toujours exactement toujours la même chose, rien de plus, rien de moins ....

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Salut,

    Et tu ne voudrais pas essayer d'utiliser un débuggeur, ça te faciliterait grandement la vie !

Discussions similaires

  1. erreur dans mon code "java.lang.NullPointerException"
    Par wiss20000 dans le forum Langage
    Réponses: 12
    Dernier message: 19/04/2007, 09h08
  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