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 :

Ressource dans le .jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut Ressource dans le .jar
    Bonjour à tous,
    J'ai actuellement un programme qui charge des propriété dans un fichier conf.cfg situé dans le même dossier que l'archive jar(qui contient donc le programme). Or, j'aimerais mettre le conf.cfg dans l'archive jar et donc faire en sorte que le programme charge les propriété à partir du fichier à l'intérieur de l'archive, je sais un peu compliqué^^.
    Voici le code actuel:

    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
    public static String getProp(String key, String defaultValue)
        {
            if(props == null)
            {
                props = new Properties();
                try
                {
                    props.load(new FileInputStream(new File(".", "conf.cfg")));
                }
                catch(FileNotFoundException e)
                {
                    e.printStackTrace();
                }
                catch(IOException e)
                {
                    e.printStackTrace();
                }
            }
            return props.getProperty(key, defaultValue);
        }
    J'ai essayé en utilisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    props.load(java.lang.ClassLoader.getSystemResource("/conf.cfg"));
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     props.load(this.getClass().getResourceAsStream("conf.cfg"));
    Mais rien à faire, il me lit toujours le con.cfg qui est externe au jar.

    Quelqu'un a une idée?

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    Par curiosité, ça donne quoi si tu change le nom du fichier (peut-être qu'il cherche d'abord le fichier dans le répertoire d'exécution et ensuite dans le jar).
    Au pire tu peux regarder les ResourceBundle et fichiers properties qui eux peuvent être lus dans le jar.

  3. #3
    Membre éclairé
    Profil pro
    Architecte logiciel
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut
    verifie que this.getClass().getResourceAsStream("/conf.cfg") fonctionne.

    car sans le "/" tu essayes de charger un ficher conf.cfg disposé au meme endroit que ta class.

    de memoire le class loader lit en priorité les urls exterieurs donc si ton url correspond aussi a une resource exterieur (en fait probablement en premier sur ton class path... ) il te renvera celle la.
    un chemin pour eviter cela si tu veux interdire la surcharge est de passer par la
    ce qui te donnera une enumeration d'URL correspondant aux ressources.
    tu peux lire celle correspondant a ton jar parcourrant ton enumeration afin de trouver celle qui te correspont.
    tu peux charger ta config contenu dans ton jar ensuite avec l'url.
    les bouts de code qui devrait t'etre utiles sont les suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	this.getClass().getClassLoader().getResources("/conf.cfg"); // lit l'ensemble des url
    	this.getClass().getProtectionDomain().getCodeSource().getLocation() // donne l'url du jar de la classe
    	new FileInputStream(new File(url.toURI())) // ouvre un inpustream depuis une url. (a verifier si ca marche bien).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Par défaut
    Merci beaucoup pour vos réponses, je vais essayer tout ça.
    Encore merci

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Et si tu supprime le fichier qui est externe au jar ?

Discussions similaires

  1. ajouter les ressources dans le jar avec maven ?
    Par rimas2009 dans le forum Maven
    Réponses: 0
    Dernier message: 17/07/2009, 15h21
  2. Réponses: 4
    Dernier message: 23/06/2008, 13h41
  3. Ressources dans un jar
    Par Nemix dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 18/06/2008, 15h01
  4. Ajouter une ressource dans un JAR
    Par FabaCoeur dans le forum Java ME
    Réponses: 2
    Dernier message: 21/02/2008, 13h34
  5. ressource dans le jar de mon appli
    Par laclac dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2007, 16h36

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