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 :

fichier properties non trouvé


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut fichier properties non trouvé
    Bonjour,

    Voilà j'ai encore un nouveau problème mais celui là est mineur je pense.
    J'ai fais une méthode pour récupérer un fichier properties et pour éviter de mettre en dur le chemin du fichier properties je l'ai mis dans le fichier properties dans une clé "répertoire echange". Le problème c'est qu'il ne me trouve pas le fichier et qu'il me met une erreur du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur Exceptionjava.lang.NullPointerException
    Voici mon code

    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
     
    public class RechercheFicProperties {
     
    	private static String repertoire;
     
    	public static void RechercheProperties(){
     
    	Properties prop = new Properties();	 
     
    	try {
     
     
     
    		prop.load(new FileInputStream(repertoire));
     
             repertoire = prop.getProperty("repertoireEchange");	
     
            System.out.println(repertoire);
     
                 } catch (Exception e) {
            System.out.println("Erreur Exception" + e);
        }
    	}
     
    }
    Je pense que c'est un problème de variable non lue ou mal placée. Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Le problème vient du fait que tu utilise l'attribut repertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prop.load(new FileInputStream(repertoire));
    alors qu'il n'a pas été initialisé et vaut donc null (d'où la NullPointerException).

    Il te faut donc initialiser l'attribut repertoire.

  3. #3
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    salut,

    Merci pour ta réponse.ouais c'est bien ce qu'il me semblait. Par contre je ne sais pas trop comment l'initialiser en fait. Au début j'avais mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static String repertoire = ("promo.properties");
    Mais je sais que ce n'est pas bon.Sa ne résoud rien du tout sa. Donc en fait je tourne en rond.
    Un petit exemple stp?
    Merci d'avance.

  4. #4
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Citation Envoyé par kifouillou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static String repertoire = "promo.properties";
    Tu peux déjà enlever les parenthèses

  5. #5
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Merci Sironimo.J'ai donc enlevé les parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static String repertoire = "promo.properties";
    J'ai interverti
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    repertoire = prop.getProperty("repertoireEchange");
    prop.load(new FileInputStream(repertoire));
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    prop.load(new FileInputStream(repertoire));  
    repertoire = prop.getProperty("repertoireEchange");
    et maintenant j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur Exceptionjava.io.FileNotFoundException: promo.properties (Le fichier spécifié est introuvable)
    Pourtant le chemin est exact. Donc je pense que c'est l'initialisation qui va toujours pas. Qu'en pensez-vous?

  6. #6
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Peux tu préciser le chemin de ton promo.properties ?

  7. #7
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Voici le chemin que j'ai mis dans mon fichier properties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    repertoireEchange = C:\Documents and Settings\LIVINFO\workspace\test\accessdata
    Et donc après comme tu l'as constaté, je fais appel dans mon code à la valeur de la clé repertoireEchange pour trouver le chemin

  8. #8
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Bon je vois un peu mieux le problème. Il faut préciser le fichier à ouvrir. Quand tu dis juste promo.properties, il le cherche à la racine de ton projet hors le chemin de la String repertoire est le chemin entier : C:\Documents and Settings\LIVINFO\workspace\test\accessdata\promo.properties.

    Tu n'as pas le choix puisque tu essaies d'ouvrir un fichier dont tu ne connais entièrement le chemin qu'à l'exécution de la méthode suivante. Donc c'est normal que cela ne marche pas et que ça se morde la queue.

    C'est plutôt une erreur de programmation

  9. #9
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Re,
    Merci.
    J'ai mis des doubles anti slash et essayé avec des slash. Mais j'ai toujours la même erreur.
    Pour le chemin j'ai fais un copier coller. Et le fichier se trouve bien à l'endroit spécifié.Et le nom du fichier c'est bien promo.properties.

  10. #10
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Regarde au-dessus, j'avais réédité mon message entre-temps.

  11. #11
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Merci pour ta réponse. Mais si je mets le chemin en dur, ma clé dans le fichier properties ne sert plus à rien alors. Parce que l'intéret du fichier properties c'est qu'on peut modifier les valeurs de l'extérieur. Si un jour quelqu'un veut changer le chemin du fichier properties ben il pourra le faire facilement à partir du fichier properties. Je sais pas trop si tu vois ce que je veux dire.

  12. #12
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Oui je vois ce que tu veux dire, tu veux rendre configurable le chemin d'accès à ton properties. Mais ta façon de t'y prendre n'est pas la bonne

    +1 pour l'intérêt de ta clé dans le fichier properties.

    Citation Envoyé par kifouillou
    Si un jour quelqu'un veut changer le chemin du fichier properties ben il pourra le faire facilement à partir du fichier properties. Je sais pas trop si tu vois ce que je veux dire.
    A partir de là, je peux quand même te proposer une solution pour garder ton système de properties. Tu dois pour cela voir deux fichiers properties.

    Le premier contient le chemin entier de ton properties et pourra donc être modifié par la suite.

    Le second est le fichier properties qui t'intéresse.

    Petite question : le fichier properties te sert juste à stocker le chemin de ton fichier properties ??

  13. #13
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    euh non,

    j'ai plusieurs chemins de stockés. Car je fais une génération de pdf donc je stocke les chemins.
    Et pui sinon je stocke dedans aussi la position, la taille et la police du texte que je rajoute dans mon pdf.
    Pour l'instant voici de quoi il est constitué :

    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
     
    repertoireEchange = C:\\Documents and Settings\\LIVINFO\\workspace\\test\\accessdata
    repertoireFormulaireVide =C:\\Temp\\pdfVide
    nomFormulaireVide = pdf_vierge.pdf
    repertoireFormulaireRempli =C:\\Temp\\pdfRempli 
    nomFormulaireRempli = formulaire_Promotelec.pdf	
     
    contact.X=119
    contact.Y=22
    contact.police=Helvetica
    contact.taille=12
     
    RS.X=118
    RS.Y=52
    RS.police=Helvetica
    RS.taille=12

  14. #14
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Alors essaie d'utiliser ma méthode avec les 2 fichiers properties, c'est un peu de la bricole mais je pense que ça peut t'aider

    Je te rappelle donc le principe :

    fichier properties 1 : contient le chemin du fichier properties 2.

    fichier properties 2 : contient toutes les autres données. Comme ça tu peux facilement paramétrer le chemin d'accès au fichier properties 2 en modifiant sa valeur dans le fichier properties 1.

    J'espère que ça pourra t'aider

  15. #15
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Re,

    Merci pour cette proposition que j'ai appliquée.
    Donc j'ai mis dans mon fichier properties1 qui est celui de tout à l'heure la clé avec sa valeur qui pointe vers le fichier properties2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    repertoireEchange = C:\\Temp\\promo_act.properties
    Dans le fichier properties 2 j'ai donc mis ce qui concerne le pdf.
    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
     
    repertoireFormulaire =C:\\Temp\\pdfVide
    nomFormulaire = pdf_vierge.pdf
    repertoreTEMP =C:\\Temp\\pdfRempli 
    formulaireRempli = formulaire_Promotelec.pdf	
     
    contact.X=119
    contact.Y=22
    contact.police=Helvetica
    contact.taille=12
     
    RS.X=118
    RS.Y=52
    RS.police=Helvetica
    RS.taille=12
    Par contre je ne sais plus lequel appelé maintenant dans mon code. Comment j'initialise la variable repertoire. Sa m'a un peu perdu quand même. Mais sa me parait être une bonne solution.Merci.

  16. #16
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Il te suffit de faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String repertoire = "toto"; // a la place de toto tu mets le chemin COMPLET du fichier properties 1
    prop.load(new FileInputStream(repertoire)); //tu ouvres ton fichier 
    String resultat = prop.getProperty("repertoireEchange"); // tu récupères le chemin du fichier properties 2
     
    // la tu fermes le File Input Stream en gérant bien ça avec un try/catch/finally
     
    resultat = resultat + "fichier_2.propeties"; //pour avoir le chemin COMPLET de ton fichier properties 2
    prop.load(new FileInputStream(resultat)); //voir ici s'il faut pas redéfinir une propriété et voilà tu es sur ton fichier properties 2, il te reste plus qu'à traiter tes données que ce fichier contient ;)
     
    // la tu fermes le File Input Stream en gérant bien ça avec un try/catch/finally
    C'est une ébauche de code, ce n'est pas fonctionnel mais la structure est là

  17. #17
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Merci beaucoup :

    J'ai donc bien remanié ma méthode

    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
     
    public static void RechercheProperties(){
     
    	Properties prop = new Properties();	 
     
    	try {
     
    		prop.load(new FileInputStream(Monrepertoire));
    		resultat = prop.getProperty("repertoireEchange");
            // Monrepertoire = prop.getProperty("repertoireEchange");	
     
                 } catch (Exception e) {
            System.out.println("Erreur Exception" + e);
        }
                 try {
     
                	 resultat = resultat + "promo_act.properties"; //pour avoir le chemin COMPLET de ton fichier properties 2
                	 prop.load(new FileInputStream(resultat));	
                	 System.out.println(resultat);          	
         	             } catch (Exception e) {
         	        System.out.println("Erreur Exception" + e);
         	    }
     
         		}
    Donc le system.out.print me retourne bien Le chemin complet du properties n°2. C'est parfait. Mais quand je fais appel par exemple aux valeurs dans le fichier de propriété2 comme ceci(au début j'avais le chemin en dur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FormVide = prop.getProperty("repertoireFormulaireVide") + prop.getProperty("nomFormulaireVide");
      FormRempli = prop.getProperty("repertoireFormulaireRempli")  + prop.getProperty("nomFormulaireRempli");
    Sa me met une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exception in thread "main" java.lang.NullPointerException
    	at accessdata.Test.remplissagePDF(Test.java:37)
    la ligne 37 c'est cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FormVide = prop.getProperty("repertoireFormulaireVide") + prop.getProperty("nomFormulaireVide");
    Encore merci.

  18. #18
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Oula c'est toi qui m'as perdu là

    On va y aller petit à petit.

    Primo, tu as pas fermer le premier inputStream, celui concernant le fichier properties 1. En suite, tu vas peut être devoir définir un nouveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Properties prop2 = new Properties();
    Et travailler sur celui-là après. Il faut certainement aussi "arrêter" le prop du dessus.

    Ensuite, je vois pas où tu mets ça précisément dans le code, à quel niveau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FormVide = prop.getProperty("repertoireFormulaireVide") + prop.getProperty("nomFormulaireVide");
      FormRempli = prop.getProperty("repertoireFormulaireRempli")  + prop.getProperty("nomFormulaireRempli");
    Tiens moi déjà au courant avec toutes ses modifications

  19. #19
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Re,

    j'ai donc bien rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Properties prop2 = new Properties();
    Par contre je ne sais pas comment fermer un inputStream.

    Pour le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FormVide = prop.getProperty("repertoireFormulaireVide") + prop.getProperty("nomFormulaireVide");
    FormRempli = prop.getProperty("repertoireFormulaireRempli")  + prop.getProperty("nomFormulaireRempli");
    Je suis dans une autre classe. Celle qui génère le pdf à partir d'un existant, réécrit par dessus et le sauvegarde dans un autre endroit. Donc il fallait définir le chemin du pdf existant et le chemin du pdf recréé. Avant c'était en dur et sa marchait. Donc comme j'ai définie les chemins ds mon fichier properties je fais appel à lui en appelant juste avant la méthode qui permet d'ouvrir mon properties.

  20. #20
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Sera déjà un peu mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // create and load default properties
    try
    {
    Properties defaultProps = new Properties();
    FileInputStream in = new FileInputStream(Monrepertoire);
    defaultProps.load(in);
    resultat = prop.getProperty("repertoireEchange");
    }
    catch{...}
    finally
    {
    in.close();
    }
    Citation Envoyé par kifouillou
    Je suis dans une autre classe. Celle qui génère le pdf à partir d'un existant, réécrit par dessus et le sauvegarde dans un autre endroit. Donc il fallait définir le chemin du pdf existant et le chemin du pdf recréé. Avant c'était en dur et sa marchait. Donc comme j'ai définie les chemins ds mon fichier properties je fais appel à lui en appelant juste avant la méthode qui permet d'ouvrir mon properties.
    Comment instancies-tu le prop dans cette autre classe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FormVide = prop.getProperty("repertoireFormulaireVide")

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [Struts 1] Fichier .properties non trouvé
    Par medirama dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/06/2014, 02h59
  2. package.properties non trouvé ?
    Par Eylir dans le forum Struts 2
    Réponses: 5
    Dernier message: 10/08/2009, 19h59
  3. Fichier hbm non trouvé à l'exécution
    Par mouaa dans le forum Hibernate
    Réponses: 11
    Dernier message: 28/10/2008, 13h47
  4. Réponses: 2
    Dernier message: 02/05/2008, 18h01
  5. Fichiers jar non trouvés
    Par Mister Nono dans le forum Langage
    Réponses: 14
    Dernier message: 26/07/2007, 17h41

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