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 :
Je lance mon jar comme cela:
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
Avec auparavant un export du classpath pour y ajouter certaines bibliothèques et /projet/config/ (histoire de charger le .properties).
Code : Sélectionner tout - Visualiser dans une fenêtre à part java -jar projet.jar
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 ) :
J'obtiens toujours un java.lang.NullPointerException au final dans le props.load...
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()));
Pour info, ce jar fonctionnait quand je chargeais le fichier avec un :
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...
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();
Pour info toujours, l'autre projet qui fonctionne charge un csv ainsi:
La structure est similaire, les seules différences (selon moi) sont:
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()));
1. jdk 1.5 (au lieu de 1.3)
2. jar lancé ainsi : java MaClass au lieu de java -jar monJar.jar
Des avis ?
Partager