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 :
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 :
reader = new CSVReader(new FileReader("data/truc.csv"));
En regardant sur internet j'ai testé, sans succès, les deux solutions suivantes :
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
Partager