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 :

Exception : java.lang.NullPointerException


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 179
    Par défaut Exception : java.lang.NullPointerException
    Bonjour,

    L'écriture du programme qui permet de générer un graphe à partir d'un fichier csv fonctionne mais
    le soucis c'est que suivant le filtrage effectue sur les fichiers d'un répertoire ça se gâte.
    Je donne un mois et une année pour effectuer le filtrage.
    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
    import java.io.File; 
    import java.io.FileFilter;
     
     
    public class Filter2 implements FileFilter{
    	private String mois;
    	private String annee;
    	private String extension;
     
    	public Filter2(String mois, String annee){
    		this.mois = mois;
    		this.annee = annee;
    	}
     
    	//Constructeur à partir de la description et de l'extension acceptée
    	public Filter2(String extension){
    		if(extension ==null){
    			throw new NullPointerException("La description (ou extension) ne peut être null.");	
    		}
     
    		this.extension = extension;
    	}
     
    	//Implémentation de FileFilter
    	public boolean accept(File file){
    		if(file.isDirectory()) { 
    			return false; 
    		}
    		String nomFichier = file.getName().toLowerCase();
    		//String regex = ".*(05).*";
    		//String regex = "(.)*("+mois+"[0-9]{2}"+annee+")(.)*";
    		String regex=".*";
    		return nomFichier.matches(regex) && nomFichier.endsWith(extension);
    	}
     
    	public File[] getFiles(){	
    		File [] files = null;
    		Filter2 csv = new Filter2(".csv",mois,annee);
    		File rep = new File("D:\\Documents and Settings\\pascal\\Desktop");
    		files = rep.listFiles(csv);
        return files;
    	}
    }
    classe qui contient le main.
    La classe MoisCSD est la classe qui permet de génerer un graphe à partir d'un fichier csv
    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
    import java.io.File;
     
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
     
     
    public class TestCode extends ApplicationFrame{
    	private static final long serialVersionUID = 1L;
     
    	public 	TestCode(){
    		super("Test");
    	}
     
    	public static void main(String [] args){
    		Filter2 filter = new Filter2("05","07");
    		File [] files = filter.getFiles();
    		if(files.length == 0){
    			System.out.println("vide");
    			System.exit(0);
    		}
    		for(File f : files)
    			System.out.println(f.getAbsolutePath());
    		String fileName = files[0].getAbsolutePath();
    		final MoisCSD mois = new MoisCSD("Mois CSD",fileName);
     
    		mois.pack();
    		RefineryUtilities.centerFrameOnScreen(mois);
    		mois.setVisible(true);
    		mois.setDefaultCloseOperation(ApplicationFrame.EXIT_ON_CLOSE);
      }	
    }
    Ce qui pose probleme est la méthode accept de Filter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Implémentation de FileFilter
    	public boolean accept(File file){
    		if(file.isDirectory()) { 
    			return false; 
    		}
    		String nomFichier = file.getName().toLowerCase();
    		//String regex = ".*(05).*";
    		//String regex = "(.)*("+mois+"[0-9]{2}"+annee+")(.)*";
    		String regex=".*";
    		return nomFichier.matches(regex) && nomFichier.endsWith(extension);
    	}
    Lorsque la regex est :
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    D:\Documents and Settings\pascal\Desktop\Stats Mens PHL CSD_043007_171523_sgactdy.csv
    D:\Documents and Settings\pascal\Desktop\Stats Mens PHL CSD_053107_171524_sgactdy.csv
    qui sont les 2 fichiers présent dans le bureau et le graphe qui est affiché contient les données du 1er.

    Lorsque j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = "(.)*("+mois+"[0-9]{2}"+annee+")(.)*";
    J'obtiens :
    alors que le parsing devrait être ok(c'est un parsing de cette forme dont j'ai besoin)
    car il contient le mois et l'année qui sont données en parametre du constructeur.

    Enfin lorsque j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = ".*(05).*";
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    D:\Documents and Settings\pascal\Desktop\Stats Mens PHL CSD_053107_171524_sgactdy.csv
    java.lang.NullPointerException
    	at MoisCSD.createDataset(MoisCSD.java:107)
    	at MoisCSD.createFrame1(MoisCSD.java:63)
    	at MoisCSD.<init>(MoisCSD.java:42)
    	at TestCode.main(TestCode.java:24)
    Le fichier qui est affiché est le correct mais ça donne ensuite une exception. Exception qui
    n'apparait pas dans le premier cas.

    J'aurai besoin d'aide pour savoir comment écrire la méthode accept.

    Merci

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Excuse moi je n'ai pas tout lu ....

    Quelle est la ligne 107 dans MoisCSD.java ?

    une des variable utilisée à cette ligne est nulle (non initialisée)

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Pour compléter ce que dit in, une nullPointerException arrive dans ce cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unObjet.uneMethode();
    si la variable unObjet n'est pas initialisée (null), cette ligne provoque l'exception. Tu peux gérer ce problème en interceptant l'exception, ou en faisant un test pour vérifier que ta variable est définie... voire en cherchant pourquoi elle n'a pas été définie si ce cas est anormal.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 179
    Par défaut
    Citation Envoyé par in
    Excuse moi je n'ai pas tout lu ....

    Quelle est la ligne 107 dans MoisCSD.java ?

    une des variable utilisée à cette ligne est nulle (non initialisée)
    Toutes les lignes indiquées sont des lignes ou le nom du fichier est utilisé.
    Le chemin d'accès au fichier est affiché dans la console mais lorsqu'il est mis en parametre d'une méthode ou constructeur ça donne les exceptions.
    C'est bizarre quand même...

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par parano
    Toutes les lignes indiquées sont des lignes ou le nom du fichier est utilisé.
    Le chemin d'accès au fichier est affiché dans la console mais lorsqu'il est mis en parametre d'une méthode ou constructeur ça donne les exceptions.
    C'est bizarre quand même...
    Je ne comprends rien à ton charabia.

    Te serait-il possible de nous faire une copie de la ligne 107 du fichier MoisCSD.java uniquement?

    Sinon, ton code contient de choses bizarres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filter2 csv = new Filter2(".csv",mois,annee);
    Je ne vois aucun constructeur de "Filter2" à 3 paramètres (même si je devine ce qu'il est supposé faire).

    As-tu testé uniquement ton expression régulière? (JUnit de validation ou classe dédiée pour faire des tests)

    Ton problème de NullPointer n'a semble-t'il pas grand chose à voir avec l'expression régulière (quoi qu'en l'absence de code... difficile de dire)
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

Discussions similaires

  1. Exception "java.lang.NullPointerException"
    Par lamia89 dans le forum Java EE
    Réponses: 16
    Dernier message: 28/11/2012, 00h32
  2. Exception java.lang.NullPointerException sans cause
    Par saraInfoSab dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 18/04/2012, 10h54
  3. une exception java.lang.NullPointerException
    Par marwa21 dans le forum Struts 1
    Réponses: 8
    Dernier message: 22/07/2010, 12h49
  4. [Exception] java .lang.NullPointerException
    Par Deallyra dans le forum Général Java
    Réponses: 8
    Dernier message: 22/05/2008, 16h25
  5. Erreur exception java.lang.NullPointerException
    Par geol99 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2007, 20h24

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