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 :

Fixer chemin relatif


Sujet :

Langage Java

  1. #1
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut Fixer chemin relatif
    Bonjour,

    J'ai recherché une solution à mon problème, mais la plupart ne conviennent pas (utilisation de servlet -> qui ne peut pas être utilisé dans mon cas, et de System -> qui ne me donne pas ce que je souhaite). C'est pourquoi je viens demander votre aide.

    Dans une classe Java je définis le chemin d'un fichier de manière absolue dans un paramètre, pour pouvoir ensuite m'en servir dans mes fonctions de ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class ToolsFichier {
     
       // Emplacement du fichier options.properties
       private static final String lsFichierOption = "D:\\developpement\\java\\workspace\\GedconfWeb\\Web Content\\WEB-INF\\conf\\options.properties";
       ...
    }
    Je souhaite remplacer ce chemin absolu par un chemin relatif. Mais pour l'instant je n'y suis pas arrivé.
    Voila l'arborescence de mon projet :
    (en rouge : où se situe mon fichier properties)
    (en vert : où se situe ma classe Java qui fixe le chemin du properties)




    Si quelqu'un à une idée pour fixer un chemin relatif ?

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final String lsFichierOption = "../../../../../Web Content/WEB-INF/conf/options.properties";
    ?

    Fred

  3. #3
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Merci pour ta réponse mavina,

    Mais ça ne marche pas avec cette syntaxte, c'est bizarre ?

    Dans les fonctions de ma classe, je fais ceci pour charger le fichier properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BufferedInputStream lFichier = new BufferedInputStream(new FileInputStream(lsFichierOption));
    BufferedReader lPointeur = new BufferedReader(new InputStreamReader(lFichier));
    Si quelqu'un à une idée pour fixer un chemin relatif à l'emplacement de mon fichier ?
    Merci

  4. #4
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final String lsFichierOption = "../../../../../conf/options.properties";
    Au temps pour moi

    Fred

  5. #5
    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 bouchette63
    Mais ça ne marche pas avec cette syntaxte, c'est bizarre ?
    Non c'est normal : les chemins relatifs le sont par rapport au répertoire de travail de l'application, et non pas par rapport à l'emplacement de la classe courante !

    Dans ton cas du devras utiliser la méthode getRealPath() de ton ServletContext et utiliser le chemin relatif par rapport à ton application web :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String fullPath = servletContext.getRealPath("/WEB-INF/conf/options.properties");
    a++

  6. #6
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Merci pour vos réponses,

    J'ai donc essayé de faire comme tu m'as dis AdiGuba.
    En fait j'avais essayé au début mais je m'y prenais mal, j'ai maintenant réussi. Donc un grand merci à toi

  7. #7
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    ah oui je pars du principe que le repertoire de travail est celui des .java

  8. #8
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut Fonctionnement sous Tomcat ?
    Bonjour,

    J'ouvre de nouveau ce sujet car j'ai un petit problème que je n'arrive pas à résoudre.

    Je fais ceci pour charger mon fichier properties dans une des fonctions de ma classe ToolsFichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    InputStream lFichier = 
    	(InputStream) ToolsFichier.class.getClassLoader().getResourceAsStream("/WEB-INF/conf/options.properties");
    Lorsque je test mon application sous WSAD, il n'y a aucun souci, le chemin complet du fichier est correctement récupéré.
    Mais lorsque je test mon application sous Tomcat 5.5, il me renvoit null . Est-ce que quelqu'un sait pourquoi et comment faire pour pallier ce soucis ?

    Merci pour votre aide,

  9. #9
    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
    Citation Envoyé par bouchette63
    Est-ce que quelqu'un sait pourquoi et comment faire pour pallier ce soucis ?
    Le répertoire WEB-INF ne devrait pas faire partie du CLASSPATH, donc le comportement de Tomcat est plutôt logique.

    Je suppose que WSAD place WEB-INF dans le CLASSPATH alors que ce ne devrait pas être le cas...

    Mais pourquoi n'utilises-tu pas la méthode getRealPath() ???? C'est fait pour ca !

    a++

  10. #10
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Merci pour ta réponse adiGuba,

    Ben en fait je n'utilise pas getRealPath() car ma classe n'est pas une servlet, et getRealPath ne s'utilise que pour une servlet, apparemment ?

    Alors je ne vois pas trop comment faire pour résoudre ce problème ?

    Quelqu'un à peut-être une idée ?

    Merci

  11. #11
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Bon ben j'ai trouvé une solution pour le faire fonctionner sous Tomcat.

    En fait il ne reconnaissait pas le répertoire WEB-INF dans mon CLASSPATH, comme me l'avais fais remarquer AdiGuba.
    J'ai donc modifié le chemin par /conf/options.properties et là plus de problème. Puisque le répertoire /conf se situe à la fois dans le répertoire /classes et /WEB-INF.
    (en attendant de trouver une meilleure solution)

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    mon problème est similaire et ce que je lis là ne me résoud pas mon problème, alors que la solution n'est surement pas loin.

    Dans une de mes classes de mon fichier jar, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Properties bdconfProperties = new Properties();
    FileInputStream tmpFile;
    try
    {
      tmpFile = new FileInputStream("/bdconf.properties");
      bdconfProperties.load(tmpFile);
    }
    catch ( FileNotFoundException e )
    {
     // TODO Auto-generated catch block
      e.printStackTrace();
    }
    Mon jar est utilisé par des servlets, il est dans le répertoire /lib.
    D'après ce que j'ai lu ici, la racine de l'application est WEB-INF, j'ai donc mis mon fichier bdconf.properties sous WEB-INF, il ne le trouve pas.

    PS : j'ai mis mon fichier un peu près partout dans l'appli, ça ne fonctionne nulle part, mais même si ça avait fonctionné, j'aimerai comprendre pourquoi.

    merci pour votre aide.

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

Discussions similaires

  1. Raccourci Chemin relatif pour la cible
    Par rabobsky dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 07/11/2005, 13h57
  2. Prb de chemin relatif
    Par hitchie dans le forum MFC
    Réponses: 4
    Dernier message: 10/05/2005, 15h46
  3. [Plugin Tomcat] Chemin relatif
    Par cloogy dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 01/03/2005, 16h26
  4. [XSL-FO] Chemin relatif d'une image
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/08/2004, 13h25
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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