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

Entrée/Sortie Java Discussion :

problème de chargement de fichier properties.


Sujet :

Entrée/Sortie Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut problème de chargement de fichier properties.
    Bonjour,

    je butte sur un chargement de fichier properties. Ce qui est étrange, c'est que j'ai utilisé un système similaire un sur un autre jar vendredi dernier, et ça marchait

    Donc mon projet actuel:
    un simple .jar qui se trouve dans une arborescence du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    -+-projet
     |
     |-+-config
     | \-rc.properties
     |
     \-+-bin
       \projet.jar
    Je lance mon jar comme cela:
    Avec auparavant un export du classpath pour y ajouter certaines bibliothèques et /projet/config/ (histoire de charger le .properties).

    Dans mon jar, j'ai testé toutes les méthodes que j'ai trouvé pour charger le .properties, comme par exemples (pas toutes à la fois ) :
    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
     
    //essai 1
    props.load(getClass().getClassLoader().getResourceAsStream("rc.properties"));
    //essai 2
    props.load(MaClass.class.getClass().getClassLoader().getResourceAsStream("rc.properties"));
    //essai 3
    props.load(this.getClass().getClassLoader().getResourceAsStream("rc.properties"));
    //essai 4
    props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("rc.properties"));
    //essai 5
    props.load(ClassLoader.getSystemResourceAsStream("rc.properties"));
    //essai 6
    URL uConf = ClassLoader.getSystemResource("rc.properties");
      try {
        props.load(uConf.openStream());
    //essai 7
    URL uConf = ClassLoader.getSystemResource("rc.properties");
      try {
        props.load(new FileInputStream(uConf.getFile()));
    J'obtiens toujours un java.lang.NullPointerException au final dans le props.load...

    Pour info, ce jar fonctionnait quand je chargeais le fichier avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    props = new Properties();
    FileInputStream fileIn = new FileInputStream("rc.properties");
    props.load(fileIn);
    fileIn.close();
    Mais évidemment, le rc.properties devait se trouver dans le dossier d'où je lançais le jar ce qui ne m'arrange pas, d'où l'utilisation du classpath...

    Pour info toujours, l'autre projet qui fonctionne charge un csv ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uConf = ClassLoader.getSystemResource("rc.csv");
      try {
        CSVReader reader = new CSVReader(new FileReader(uConf.getFile()));
    La structure est similaire, les seules différences (selon moi) sont:
    1. jdk 1.5 (au lieu de 1.3)
    2. jar lancé ainsi : java MaClass au lieu de java -jar monJar.jar


    Des avis ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Où ce trouve ce fichier .properties à l'intérieur du jar?

    A mon avis, t'aura plus de chance avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    props.load(getClass().getClassLoader().getResourceAsStream("config/rc.properties"));

  3. #3
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Non, le .properties (tout comme le .csv du jar qui fonctionnent), se trouvent à l'extérieur du jar. C'est pour cela que je mets le nom du dossier où ils se trouvent dans le classpath à chaque fois:

    par exemple, le properties est dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /projet/config/rc.properties
    le jar dans :
    je lance ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar /projet/bin/projet.jar
    avec ma variable CLASSPATH qui vaut /projet/config
    ou j'ai aussi tenté comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp /projet/config -jar /projet/bin/projet.jar
    Rien de tout cela ne fonctionne MAIS j'ai réussi comme cela:
    Les fichiers sont aux mêmes endroits, mais cette fois, je lance mon jar comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -cp /projet/config:/projet/bin/projet.jar MaClass
    Alors pourquoi cette méthode marche et pas l'autre ?!

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    -cp et la variable d'environnement CLASSPATH sont ignoré lorsque tu lances un fichier avec l'option -jar !

    Dans ce cas là il faut utiliser l'attribut Class-Path du manifest, qui utilise des chemins relatif...

    a++

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Parceque quand. on utilise l'option "-jar", le classpath est lu dans le fichier Manifest du jar.
    L'option "-cp" est donc ignorée.

    edit: grillé par Adiguba

  6. #6
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    -cp et la variable d'environnement CLASSPATH sont ignoré lorsque tu lances un fichier avec l'option -jar !

    Dans ce cas là il faut utiliser l'attribut Class-Path du manifest, qui utilise des chemins relatif...

    a++
    Forcément, j'aurais du me douter que c'était un truc à la c*n comme ça

    Désolé

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

Discussions similaires

  1. Problème de chargement de fichier avec upload
    Par gasper06 dans le forum Flex
    Réponses: 1
    Dernier message: 19/06/2009, 14h32
  2. Réponses: 5
    Dernier message: 29/09/2008, 15h42
  3. [load] Problème de chargement de fichier mat
    Par VanessaDu67 dans le forum MATLAB
    Réponses: 3
    Dernier message: 07/09/2007, 09h53
  4. [VB6]Problème de chargement de fichier
    Par gwendo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/05/2007, 14h12
  5. Réponses: 1
    Dernier message: 01/12/2006, 10h54

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