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

Maven Java Discussion :

FileNotFoundException lors du chargement d'un fichier .properties


Sujet :

Maven Java

  1. #21
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Salut,
    as-tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    String propFileName = "db.properties";
    InputStream inputStream = classLoader.getResourceAsStream(propFileName);
    eric
    Oui, il y a 8 minutes de ça

    Et ça marche comme je le disais juste avant.

    Merci quand même

  2. #22
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Points : 33
    Points
    33
    Par défaut On a la réponse, maintenant on voudrais l'explication :-p
    Histoire de pas mourir idiot, si quelqu'un peut m'expliquer pourquoi il fallait récupérer le thread courant ...
    Dans quel thread il s'exécutait précédemment ? Et pourquoi ne trouvait-il pas le fichier .properties ?

  3. #23
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    si tu écris InputStream in = getClass().getResourceAsStream("db.properties");
    ça veut dire qu'il va chercher le fichier db.properties dans le même package que celui de la classe
    Message numéro 1: il faut le mettre dans le package
    Citation Envoyé par OphyTe Voir le message
    J'ai essayé avec "/src/test/resources/db.properties", "src/test/resources/db.properties", "/resources/db.properties", "resources/db.properties" et pas mieux ...
    Message numéro 2: tu essaie partout sauf dans le package. Les emplacements "src/test/resources/fr/projet/db/db.properties" et "src/main/resources/fr/projet/db/db.properties" pouvaient convenir.

    Citation Envoyé par OphyTe Voir le message

    Aucune idée de pourquoi il fallait ce Thread.currentThread() donc si vous avez des idées, je suis preneur .
    En tout cas merci pour votre aide.
    Message numéro 3: tu n'es plus passé par la classe:


    Il y a deux série de méthodes getRessource[asStream]:

    celles du classloader: qui cherchent à partir de la racine du classpath (ce qui correspond à ton numéro 2 et ton numéro 3)
    celles présente sur l'objet Class, qui cherchent relativement au package de la classe, ce qu'on t'as signalé en 1 et dont tu n'a pas tenu compte.

    Voilà pourquoi l'un marche et pas l'autre.
    Remarque que tu n'es pas obligé de passer par le context classloader, tu peux très bien faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getClass().getResourceAsStream("/db.properties"); // on note la présence du '/' en tête
    getClass().getClassLoader().getResourceAsStream("db.properties");

  4. #24
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    [...]
    Message numéro 1: il faut le mettre dans le package [...] ce qu'on t'as signalé en 1 et dont tu n'a pas tenu compte.
    Ça n'était pas de la mauvaise volonté, j'avais juste compris à l'envers. Je croyais que Népomucène me disait de spécifier en argument le chemin complet du fichier ...

    Citation Envoyé par tchize_ Voir le message
    Il y a deux série de méthodes getRessource[asStream]:

    celles du classloader: qui cherchent à partir de la racine du classpath (ce qui correspond à ton numéro 2 et ton numéro 3)
    celles présente sur l'objet Class, qui cherchent relativement au package de la classe [...].

    Voilà pourquoi l'un marche et pas l'autre.
    C'était donc ça ...
    Je vais essayer de retenir cette petite subtilité ...

    Citation Envoyé par tchize_ Voir le message
    Remarque que tu n'es pas obligé de passer par le context classloader, tu peux très bien faire:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getClass().getResourceAsStream("/db.properties"); // on note la présence du '/' en tête
    getClass().getClassLoader().getResourceAsStream("db.properties");
    Nickel, c'est parfait !

    Encore merci à vous 3 pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/03/2011, 11h07
  2. Problème de chargement d'un fichier properties
    Par elitost dans le forum Langage
    Réponses: 8
    Dernier message: 18/05/2009, 00h22
  3. Réponses: 0
    Dernier message: 24/08/2008, 10h56
  4. bizarrerie de flash lors du chargement de X fichiers
    Par Lorenzo77 dans le forum Flash
    Réponses: 6
    Dernier message: 17/04/2007, 09h52
  5. erreur lors du chargement d'un fichier swf
    Par pseudobidon57 dans le forum Général VBA
    Réponses: 2
    Dernier message: 05/11/2006, 13h56

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