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

Servlets/JSP Java Discussion :

Rechercher un fichier dans le classpath


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut Rechercher un fichier dans le classpath
    Bonjour,

    j'ai créer une classe java nécessitant différentes configurations pour fonctionner correctement. J'aimerais que ces configurations soient contenues dans un fichier xml et lues par le constructeur de ma classe.

    J'aimerais faire quelquechose comme log4j qui est capable de lire un fichier log4j.xml.

    Savez-vous comment rechercher un fichier avec un nom bien précis dans le classpath.

    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Je te conseille de prendre un Stream, pas un File parce que ce fichier pourrait comme ça aussi se trouver dans un jar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ClassLoader.getSystemResourceAsStream("monfichier.xml")
    A adapter au besoin selon le ClassLoader à utiliser ...

  3. #3
    Membre expérimenté
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Par défaut
    Salut
    As tu regarder getResourceAsStream et les méthodes analogues de la classe ClassLoader ?

    http://java.sun.com/j2se/1.4.2/docs/...va.lang.String)

    Je pense que cela peut répondre à ton problème

    a+

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    Merci pour vos réponses. Je sais maintenant vers où orienter mes recherches.

    Je met ce post en "résolu" car je considère vos réponses comme des solutions.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    Je voudrais tester le chargement du fichier de configuration mais je ne sais pas où mettre le fichier xml. Je sais que je dois le mettre dans le classpath.

    Je développe sous éclipse. J'ai dans mon projet un répertoire src contenant les classes de mon application. J'ai également un répertoire test dans lequel j'ai devéloppé une classe de test (avec un main).

    J'ai mis mon fichier xml dans le package test.util et également dans le package monapp.util mais le fichier n'est pas trouvé.

    De même, j'ai mis le ficiher log4j.xml dans le répertoire test.util mais celui-ci ne semble pas être pis en compte.

    Ces 2 fichiers ne semblent pas être dans le classpath, malgré qu'ils soient présent dans les packages des sources.

    Avez-vous une idée ?

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par erwan.bodere
    Ces 2 fichiers ne semblent pas être dans le classpath, malgré qu'ils soient présent dans les packages des sources.
    S'il sont dans les sources du projet eclipse, ils sont automatiquement placé dans le classpath...

    Fais voir ton code et ton arborescence...

    a++

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    L'arborescence (vue eclipse) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -> src \ com.monapp
                        .api
                        .exception
                        .util
                        MaClassePrincipale.java
     
    -> test \ test
                        MaClasse2Test.java
                        monfichierconf.xml
                        log4j.xml
     
    -> lib
    Le code de la classe MaClassePrincipale.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class MaClassePrincipale {
     
      public static final String MON_FICHIER="monfichierconf.xml";
      public final Logger logger = Logger.getLogger(getClass());
     
      public MaClassePrincipale() {
        InputStream loStream = ClassLoader.getSystemResourceAsStream(MON_FICHIER);
        if(loStream == null) 
           logger.debug("Le fichier n'existe pas");
        else
           logger.debug("Le fichier existe");
      }
    }
    Le fichier log4j.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >
      <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n"/>
        </layout>
      </appender>
     
      <root>
        <level value="debug" />
        <appender-ref ref="CONSOLE"/>
      </root>
    </log4j:configuration>

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Le fichier est dans le package test, cela doit donc se reporter dans son nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String MON_FICHIER="test/monfichierconf.xml";
    a++

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    Je croyais que le fait de rechercher dans le classpath impliquait que la recherche se fasse dans l'ensemble des packages et sous-packages. C'est vrai qu'ainsi les temps de recherche seraient relativement longs.

    Voila la solution que j'ai mis en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String MON_FICHIER="monfichierconf.xml";
    et j'ai placé le fichier xml de conf plus le fichier xml de log4j à la racine de mon répertoire test.

    Ceci fonctionne désormais.

    Un grand merci adiGuba.

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    C'est encore moi !

    je dois vraiment être nul

    J'ai ajouté le jar de mon application dans une application web. J'ai essayé de positionner le fichier de configuration un peu partout mais il semble que cela ne fonctionne pas.

    J'ai notamment mis le fichier xml dans WEB-INF\classes comme pour le fichier log4.xml mais mon fichier n'est pas lu.

    Avez-vous une idée ?

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    J'ai résolu mon problème.

    J'ai crée un servlet qui m'initialise mon composant en passant en paramètre le répertoire à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    config.getServletContext().getRealPath("/WEB-INF/")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 10h43
  2. [FTP] Rechercher des fichiers dans un site FTP par PHP
    Par jack_1981 dans le forum Langage
    Réponses: 31
    Dernier message: 03/08/2006, 13h37
  3. Trouver fichier dans le classpath [JSP]
    Par hugo123 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 01/08/2006, 14h59
  4. rechercher des fichiers dans tous les dossiers
    Par nitteo dans le forum MFC
    Réponses: 4
    Dernier message: 23/06/2006, 18h08
  5. Recherche de fichiers dans des sous répertoires
    Par Mimi Bulles dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 16h41

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