Bonjour à tous,

Pour lire un fichier csv, j'utilise la librairie opencsv 2.3. Tout fonctionne très bien quand j'exécute mon code dans Eclipse. Je souhaite maintenant créer un jar exécutable, et là mes ennuis commencent.

J'ai déjà eu un problème avec les images sur des JButton que j'ai résolu de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
// Ancienne version (ne fonctionne pas dans le jar)
this.setIcon(new ImageIcon("img/truc.png"));
 
// Nouvelle version (fonctionne dans le jar)
this.setIcon(new ImageIcon(ClassLoader.getSystemResource("img/truc.png")))
Maintenant je souhaiterais que la ligne suivante (qui marche très bien dans Eclipse), puisse être exécutée dans le jar :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
reader = new CSVReader(new FileReader("data/truc.csv"));
En regardant sur internet j'ai testé, sans succès, les deux solutions suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
// Methode 1 - La même que celle utilisée pour les images
reader = new CSVReader(new FileReader(ClassLoader.getSystemResource("data/truc.csv").getFile()));
 
// Methode 2 - Utiliser un BufferedReader
InputStream is = getClass().getResourceAsStream("data/truc.csv");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader buf = new BufferedReader(isr);
reader = new CSVReader(buf);
Dans le premier cas, cela fonctionne dans Eclipse mais pas en exécutant le .jar (NullPointerException).
Dans le deuxième cas, même dans Eclipse j'ai un NullPointerException (à la création de "isr").

Auriez-vous une petite idée pour me sortir de là ? Où est-ce que je me suis planté ?

Merci d'avance !

EDIT : Dans la méthode utilisant le BufferedReader, si je remplace "data/truc.csv" par "../data/truc.csv", cela fonctionne dans Eclipse mais pas dans le .jar