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

Java Discussion :

[packaging] fichiers de configuration externe au jar et internes au jar


Sujet :

Java

  1. #1
    Invité
    Invité(e)
    Par défaut [packaging] fichiers de configuration externe au jar et internes au jar
    Bonjour à tous,

    Je tente de packager mon application sous la forme suivante :
    \application\launcher.jar
    \application\launcher.jar!log4j.properties
    \application\lib\*.jar
    Mais lorsque j'exécute celle-ci je reçois une exception car le fichier ".\conf\hibernate.cfg.xml" n'est pas trouvé. Je tente de placer ce fichier dans un répertoire "conf" mais cela ne change rien :
    \application\conf\hibernate.cfg.xml
    Ma question est donc : ou stocker les fichiers de configuration et comment y accéder ?
    Mon idéal serais d'obtenir la structure suivante :
    \application\launcher.jar
    \application\launcher.jar!\conf\hibernate.cfg.xml
    \application\conf\log4j.properties
    \application\lib\*.jar

    J'ai aussi une classe qui parcours le contenu du package "me.app.resources" pour lister les fichiers "resources**.properties" qui se casse les dents lorsqu'elle est packagée. Comment lire le contenu d'un jar ?

    Merci

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Question maintes fois abordée
    Regarde dans la FAQ.
    En très résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getClass().getResourceAsStream( chemin_relatif );
    Ce qui te permet d'obtenir un InputStream sur la ressource.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui je sais mais :

    Je dois lire le contenu d'un package pour récupérer des informations. Comme lire le contenu d'un "dossier" depuis un inputstream ?

    Merci pour ta réponse.

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Bonjour,

    Tu peux faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(monFichier.isDirectory()){
        File[] contenu = monFichier.listFiles();
    }
    Avec monFichier un objet File

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par afrikha Voir le message
    Tu peux faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(monFichier.isDirectory()){
        File[] contenu = monFichier.listFiles();
    }
    Non je ne peux pas faire ça car 'monFichier' est un package contenu dans mon jar. Je dois obtenir le chemin de mon jar et le lire comme un fichier compressé (puisque s'en est un).
    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
     
    /* Si dir est lisible c'est un dossier normal (non compressé). Sinon on vérifie si
     * son chemin contiens ".jar!" ce qui signifie que c'est une archive */
    if ( dir.canRead() ) {
      names = Arrays.asList(dir.list(filter));
    } else if ( !dir.canRead() && dir.getPath().contains(".jar!") ) {
      names = new ArrayList<String>();
      // Récupère le chemin absolu vers le jar
      String archivePath = dir.getAbsolutePath();
      archivePath = archivePath.substring(0, archivePath.indexOf('!'));
      archivePath = archivePath.substring(archivePath.indexOf("file:\\")+"file:\\".length());
      ZipFile archive = null; // JarFile existe aussi mais dans mon cas ne m'apporte rien 
      try {	
        archive = new ZipFile(archivePath);
        Enumeration<? extends ZipEntry> content = archive.entries();				
        while (content.hasMoreElements() ) {
            ZipEntry entry = content.nextElement();
            if ( !entry.isDirectory() && filter.accept(null, entry.getName()) ) {
              names.add(entry.getName());						
            }
          }
        } catch (IOException e) { 
          // Do Nothing
        } finally {
          if ( archive!=null ) {
            try { archive.close(); } catch (IOException e) {}
            archive = null;
          }
        }
    }

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

Discussions similaires

  1. Problème de chargement de fichier de configuration externe
    Par Leelith dans le forum Framework .NET
    Réponses: 4
    Dernier message: 11/04/2013, 19h29
  2. Lire un fichier de configuration externe
    Par bouriquo92 dans le forum VB.NET
    Réponses: 4
    Dernier message: 21/04/2011, 15h05
  3. Fichiers de configuration externe à l'EAR
    Par vintz72 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 17/02/2009, 16h28
  4. Réponses: 2
    Dernier message: 20/11/2008, 16h25
  5. Jar et fichier de config externe
    Par zulot dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/12/2007, 10h32

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