Rechercher : dans
Par :

Erreur java java.lang.NullPointerException

Dernière réponse le 8 jan 2009 à 15:40:09 yuri648, le 7 jan 2009 à 10:44:49 
 Signaler ce message aux modérateurs

Bonjour,
j'ai cette erreur et je ne sai pas d'ou vient:

Exception in thread "main" java.lang.NullPointerException
at pdf.<init>(pdf.java:30)
at nn.main(nn.java:11)

voila la classe pdf:

import java.io.File;
import java.util.Stack;


public class pdf {
public pdf()
{
Stack<String> pile=new Stack();
String dd="d:/";
String v;
int i;
boolean bol=false;
String h="pdf";
File[] lis=null;
i=0;




while(bol==false)
{
// dd=(String) pile.pop();
File g=new File(dd);

lis=g.listFiles();

i=0;


while(i<lis.length )
{
if(lis[i].isDirectory()==true){pile.push(lis[i].getPath()); }

else {
v=getExtension(lis[i]);
if(h.equals(v)){System.out.println("le fichier"+ lis[i]);}

}
i=i+1;
}

if(!pile.isEmpty()) {dd=(String) pile.pop(); }
else{bol=true;}
}

}





public static String getExtension(File f) {
if(f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if(i>0 && i<filename.length()-1) {
return filename.substring(i+1).toLowerCase();
}
}
return null;
}

}
et la classe main:


import java.io.IOException;


public class nn {


public static void main (String arguments[]) throws IOException
{


pdf mm=new pdf();

}
}
et merci d'avence.

Configuration: Windows XP
Firefox 2.0.0.20

Meilleures réponses pour « erreur java java.lang.NullPointerException » dans :
Java - Caractéristiques du langage VoirFichier source, compilation et machine virtuelle Le fichier source d'un programme écrit en Java est un simple fichier texte dont l'extension est par convention .java. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un...

1

Nixial, le 7 jan 2009 à 19:58:16

Bonsoir,

Le fameux null pointer exception, veut dire que tu fais appel à quelque chose qui est null.

Essai de voir si ce n'est pas ceci :

File[] lis=null;
i=0;

while(bol==false)
{
// dd=(String) pile.pop();
File g=new File(dd);

lis=g.listFiles();

Ici, tu instancies un objet g de type File, avec le chemin dd or dd n'est pas le chemin d'un répertoire tu n'as mis que D:/.

Donc comme ta variable lis est instanciée à null et que tu mets dedans g.listFiles (qui est null), je pense que ça vient de là.

Sauf erreur !

Répondre à Nixial

2

yuri648, le 7 jan 2009 à 20:07:54

Mais d:/ il a des repertoires

Répondre à yuri648

3

yuri648, le 7 jan 2009 à 20:51:07

Le prb c'est a l'instruction while(i<lis.length)
je ne sai pa pourkoi?

Répondre à yuri648

4

Nixial, le 7 jan 2009 à 22:21:49

C'est parce que lis est null, d:/ n'est pas un répertoire, tu dois mettre d:/dossier par exemple.

Répondre à Nixial

5

yuri648, le 7 jan 2009 à 22:22:56

Oui c vrai tu a raison mais comment je cherche les fichier dans D:/?

Répondre à yuri648

7

Nixial, le 7 jan 2009 à 22:30:05

Après personnellement je ne m'y connais pas plus pour sélectionner tous les fichiers, je peux juste te dire où est ton erreur, personnellement je ne suis pas spécialisé dans ce domaine :)

Bonne chance :)

Répondre à Nixial

9

Marco la baraque, le 7 jan 2009 à 22:39:25

De toutes façons la racine du système de fichiers est considéré comme un répertoire. J'ai d'ailleurs essayé chez moi sur c:/ et ce code a marché.
A mon avis c'est uniquement un problème de récurrence : à un moment dans l'exécution tu as un répertoire que tu affectes à lis qui est null ou je ne sais pas quoi, et c'est ça qui fait planter ton algo.

Cordialement, rtfm and jfgi
Simple "merci" makes helping people happy :)

Répondre à Marco la baraque

6

yuri648, le 7 jan 2009 à 22:29:32

Je veux rechercher des fichier pdf dans tout D: et merci de m'aider

Répondre à yuri648

8

yuri648, le 7 jan 2009 à 22:30:52

Ok merci bcp

Répondre à yuri648

10

yuri648, le 8 jan 2009 à 12:40:53

Il m'ont dit d'utiliser try{} catch{}

Répondre à yuri648

11

Marco la baraque, le 8 jan 2009 à 13:47:51

C'est une erreur d'utiliser un try/catch avec un NullPointerException.
Conceptuellement, si tu as un NullPointerException, c'est que tu as fait une opération non conforme, tu as un problème dans ton algorithme.

Le try/catch te permettra d'éviter le problème, mais c'est de la programmation dégueulasse (c'est une pauvre rustine sur un pneu pourri).

Cordialement, rtfm and jfgi
Simple "merci" makes helping people happy :)

Répondre à Marco la baraque

12

 yuri648, le 8 jan 2009 à 15:40:09

C vrai ta raison mais sa regle les pbs grace a cella l'algo marche tres bien

Répondre à yuri648