#1 Le 01/12/2008, à 17:57
- ilym
[Resolu] Erreur execution Java : java.lang.NullPointerException
bonjour,
comme l'indique le titre, j'ai une erreur execution : java.lang.NullPointerException
Voiçi les morceaux de codes d'où viendrait le pb :
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;
}
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...}
où est le pb ? Comment le résoudre ?
merci de votre aide
Dernière modification par ilym (Le 05/12/2008, à 08:34)
Hors ligne
#2 Le 01/12/2008, à 18:42
- ®om
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
NullPointerException n'est pas une erreur de compilation mais une erreur d'exécution.
Elle se produit quand tu déréférences une variable qui vaut null ; autrement dit, quand tu fais taVariable.uneMethode() et que taVariable est null.
Dans ton exemple, factory pourrait être null par exemple. Mais il suffit de regarder la ligne où cette exception est levée, tu trouveras tout de suite
Hors ligne
#3 Le 01/12/2008, à 18:53
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
daccord. Voiçi les lignes juste au dessus du premier code :
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;
}
Donc apparamment factory n'est pas null. C'est pour cela je ne vois vraiment pas d'où vient cette erreur.
Mais il suffit de regarder la ligne où cette exception est levée, tu trouveras tout de suite
voiçi donc :
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()
Je ne vois vraiment pas ce qui provoque cette variable NULL....
Peut être vois-tu l'erreur ?
Dernière modification par ilym (Le 01/12/2008, à 18:56)
Hors ligne
#4 Le 01/12/2008, à 21:33
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Personne n'est incollable sur la programmation ?
Hors ligne
#5 Le 01/12/2008, à 22:12
- ®om
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
IFigureComposee res = this.factory.nouvelleFigureComposeeVide();
Après ça res est null alors
Regarde dans nouvelleFigureComposeeVide();
Hors ligne
#6 Le 01/12/2008, à 22:27
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
la voiçi :
public IFigureComposee nouvelleFigureComposeeVide() {
return new FigureComposee();
}
Hors ligne
#7 Le 02/12/2008, à 00:24
- Respawner
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
sousFig == null ?
Hors ligne
#8 Le 02/12/2008, à 08:21
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
sousFig == null ?
a bon? je pense pas puique sousFig est un paramètre. A moins que je ne me trompe.
Hors ligne
#9 Le 02/12/2008, à 08:43
- Aneldix
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Il semble que si. Comment l'as tu initialisée?
Hors ligne
#10 Le 02/12/2008, à 08:48
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
pas besoin de l'initaliser puisque c'est un paramètre :
public void ajouteSousFigure(IFigure sousFig) {
this.figs.add(sousFig);
}
c'est le seul endroit où il y a sousFig
donc je vois pas
Hors ligne
#11 Le 02/12/2008, à 10:01
- Respawner
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Ouai mais quand tu utilises cette méthode tu lui donnes bien un paramètre.
Vérifie qu'il n'est pas null.
Y'a une méthode infaillible pour ça
public void ajouteSousFigure(IFigure sousFig) {
if (sousFig == null) {
System.out.println("Hehooooo !");
return;
}
this.figs.add(sousFig);
}
Hors ligne
#12 Le 02/12/2008, à 10:02
- ®om
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Juste après cette ligne :
IFigureComposee res = this.factory.nouvelleFigureComposeeVide();
Rajoute :
System.err.println("res = " + res);
Hors ligne
#13 Le 02/12/2008, à 13:21
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Aucune de ces deux méthodes ne fonctionnent, le programme me donne toujours la même erreur.... Je comprend vraiment pas.
Dernière modification par ilym (Le 02/12/2008, à 13:34)
Hors ligne
#14 Le 02/12/2008, à 13:40
- ®om
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Ce que je t'ai indiqué au #12, évidemment que ça ne résoud pas le problème, mais ça t'affiche un message sur la sortie d'erreur standard...
C'est ça qu'il faut regarder
Hors ligne
#15 Le 02/12/2008, à 13:43
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
non justement, ça n'affiche rien de nouveau justement, c'est toujours la même erreur qui s'affiche
Hors ligne
#16 Le 02/12/2008, à 14:00
- ®om
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Non mais "avant" le NullPointerException.
Si ça n'affiche rien, ça veut dire que l'exécution ne passe même pas par là.
Hors ligne
#17 Le 02/12/2008, à 16:31
- Martopioche
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Et en utilisant un déboggueur ?
Enfin, moi je dis ça...
Hors ligne
#18 Le 02/12/2008, à 16:32
- ®om
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Et en utilisant un déboggueur ?
Enfin, moi je dis ça...
Hors ligne
#19 Le 02/12/2008, à 18:09
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
non dsl il n'y a absolument rien de plus.... mais si tu veux, je peux te donner le source complet pour que tu y jetes un coup d'oeil ?
Hors ligne
#20 Le 05/12/2008, à 07:44
- enguerran
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Si tu n'as pas encore résolu ton problème, envoie le source complet, on pourra t'aider plus facilement...
Sinon passe ton post en [Résolu] ^^
Dernière modification par enguerran (Le 05/12/2008, à 07:45)
Ubuntu Lucid (qui fonctionne au poil ^^)
Hors ligne
#21 Le 05/12/2008, à 08:35
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
c'est bon, ça s'est résolu tout seul. Après avoir juste fait un format code avec Netbeans (une option pour bien justifié le code de manière présentable) sur la fonction main, ça à marché. Donc ce n'était en aucun cas un pb de NullPointerException mais plutôt un vilain bugue de Netbeans.
Hors ligne
#22 Le 05/12/2008, à 10:12
- Mathieu147
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
Ça serait étonnant que ce soit un bug de Netbeans, une nullpointerexception...
Par contre avec NEtbeans, utilise le débogueur: mets un point d'arrêt, puis avec F7 et F8, exécute le code pas à pas. En mettant ta souris sur une variable, tu vois "en temps réel" sa valeur.
Et avec ça tu vas gagner plein de temps!
Pffff…
Hors ligne
#23 Le 05/12/2008, à 18:21
- ilym
Re : [Resolu] Erreur execution Java : java.lang.NullPointerException
pourtant je ne vois pas d'autre explication. je n'ai pas changé une virgule de mon code et tout à remarché d'un seul coup...
Hors ligne