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 :

accès relatif a un *.properties dans un jar executable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut accès relatif a un *.properties dans un jar executable
    Bonjour,

    J'ai un jar exécutable dans lequel, j'ai un répertoire meta-inf qui contient un fichier.properties

    Depuis mon java, et sur eclipse, j'arrive a y accéder avec un chemin relatif tout bête: "meta-inf/fichier.properties"
    Mais dans mon jar, lors de l'éxécution via les commandes, il dit ne pas trouver le fichier correspondant à ce chemin...
    Du coup, je me demande ou je vais pouvoir mettre ce chemin...
    Est ce normal qu'il ne trouve pas le fichier?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui puisque le "fichier" n'existe pas, seul existe ton jar pour le filesystem. Tu dois utiliser les ressources pour tout ce qui est dans le classpath:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream in = getClass().getResourceAsStream("/META-INF/fichier.properties");

  3. #3
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    Bonjour, merci pour votre message.
    En admettant que je récupère le fichier de cette manière, si je veux accéder à un autre fichier de ce type dans le disque dur, j'y accéderais de la manière classique en le traitant comme un fichier existe n'est ce pas?

    Ensuite, si jamais je load mon fichier properties se trouvant dans le jar, et que je le modifie, puis recrée le fichier properties; mon fichier sera modifié dans le jar pour la prochaine exécution n'est ce pas?

    Merci beaucoup

  4. #4
    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 jamesleouf Voir le message
    Ensuite, si jamais je load mon fichier properties se trouvant dans le jar, et que je le modifie, puis recrée le fichier properties; mon fichier sera modifié dans le jar pour la prochaine exécution n'est ce pas?
    Non...
    Enfin c'est techniquement possible mais certains systèmes d'exploitations empêche la modification de fichier lorsqu'ils sont utilisés Comme le Jar est utilisé par la JVM, tu ne peux pas modifier son contenu.


    Que cherches-tu à faire précisément ?

    a++

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non, on ne modifie pas le contenu du jar. Si le fichier doit évoluer de par l'action de l'utilisateur, il faut le stocker en dehors du jar, typiquement dans le home de l'utilisateur (accessible via System.getProperty("user.home")).

  6. #6
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    ok, bah je le mettrais ailleurs alors
    En fait j'ai une appli dont certains paramètres seraient susceptibles de changer au fur et à mesure des exécutions.
    Le problème si je le place à l'extérieur du jar, c'est que si je veux mettre le programme sur un autre poste, il faudra recréer l'arborescence pour pouvoir y accéder. Ce qui n'est pas très malin.

  7. #7
    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
    Il suffit de cumuler les deux !

    1. Tu charges le fichier properties du jar, qui contiendra les valeurs par défaut.
    2. S'il existe, tu charges le fichier de configuration du user-home, qui pourrait redéfinir certaines valeurs.


    C'est pas bien compliquer à faire en plus :
    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
        Properties config = new Properties();
     
        InputStream defaultInput = getClass().getResourceAsStream("/META-INF/fichier.properties");
        try {
            config.load(defaultInput);
        } finally {
            defaultInput.close();
        }
     
        File file = new File(System.getProperty("user.home"), ".myapps/fichier.properties");
        if (file.exists()) {
            InputStream fileInput = new FileInputStream(file);
            try {
                config.load(fileInput);
            } finally {
                fileInput.close();
            }
        }

    a++

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    rien ne t'empeche d'embarquer dans ton jar une "configuration par défaut" et de la transférer vers la home si la home ne contient pas cette configuration

  9. #9
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    Merci à tous!

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

Discussions similaires

  1. Applet : Pb de Securité d'un .propertie dans un Jar
    Par CocoLeNain dans le forum Applets
    Réponses: 0
    Dernier message: 07/04/2010, 13h21
  2. Inclusion d'un fichier properties dans un jar avec la commande jar
    Par Lolitaaa dans le forum Général Java
    Réponses: 3
    Dernier message: 15/12/2009, 14h17
  3. chemin d'accés relatif pour une photo dans un état
    Par SG2607 dans le forum VBA Access
    Réponses: 13
    Dernier message: 11/01/2008, 14h03
  4. fichier de properties dans un jar
    Par davman_63 dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2007, 16h42
  5. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 15h16

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