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 ?