OVH Cloud OVH Cloud

erreur d'execution de programme java

4 réponses
Avatar
pat
j'ai eu un programme de test en java pas moyen de l'exécuter
j'ai l'erreur suivante
a votre avis s'est un pb de programme ou de java sur l'ordi?

[pat@pat 002]$ java -jar JSPerles.jar
Exception in thread "main" java.lang.NullPointerException
at JSPerlesPerlesBar.<init>(JSPerlesPerlesBar.java:38)
at JSPerlesFrame.buildContent(JSPerlesFrame.java:299)
at JSPerlesFrame.<init>(JSPerlesFrame.java:45)
at JSPerles.main(JSPerles.java:53)

4 réponses

Avatar
ekse
j'ai eu un programme de test en java pas moyen de l'exécuter
j'ai l'erreur suivante
a votre avis s'est un pb de programme ou de java sur l'ordi?

[ 002]$ java -jar JSPerles.jar
Exception in thread "main" java.lang.NullPointerException
at JSPerlesPerlesBar.<init>(JSPerlesPerlesBar.java:38)
at JSPerlesFrame.buildContent(JSPerlesFrame.java:299)
at JSPerlesFrame.<init>(JSPerlesFrame.java:45)
at JSPerles.main(JSPerles.java:53)


Salut,

Sans avoir accès au code, il semble difficile de t'aider. Les
NullPointerException surviennent dans ce genre de cas :

String s = null;
s.length();
^
Là, Java te lance un NullPointerException car s n'est pas instantié,
ie, on a pas fait de s = new String();

Bon courage

Eric.

Avatar
ilan.ginzburg
En ligne 38 de JSPerlesPerlesBar.java, dans le (un des) constructeur(s)
de JSPerlesPerlesBar y'a un dereferencement d'une variable de valeur
null.

C'est un bug dans le programme, pas de java.
Avatar
ekse
En ligne 38 de JSPerlesPerlesBar.java, dans le (un des) constructeur(s)
de JSPerlesPerlesBar y'a un dereferencement d'une variable de valeur
null.

C'est un bug dans le programme, pas de java.



Cette ligne
JSPerlesPerlesBar.<init>(JSPerlesPerlesBar.java:38)
ne nous indiquerait-elle pas que l'erreur provient de la déclaration des
attributs plutot ?

Avatar
ilan.ginzburg
Soit effectivement dans la declaration des attributs d'instance soit
dans le constructeur mais pas dans la declaration des attributs de
classe (dans ce cas on aurait une exception avec <clinit> et pas
<init>).

L'affectation "en ligne" des attributs d'instance est simplement un
raccourci de l'affectation de ces attributs dans tous les constructeurs
de la classe.

Donc en ligne 38 on pourrait avoir une declaration d'attribut avec
dereferencement d'une variable nulle comme par exemple:

public class JSPerlesPerlesBar {

int i = x.method(); // ligne 38, avec x == null
}


Ou encore du code erroné dans un constructeur:

public class JSPerlesPerlesBar {

JSPerlesPerlesBar() {
System.out.println(x.method()); // ligne 38, avec x == null
}
}