Bonjour,
J'ai un fichier CreationTable_SuiviCumul.sql qui se trouve dans mon projet "TraitementReferentielFlux" dans le répertoire : "requetesSQL" :
J'ai crée l'opération suivante qui permet de tenir compte de la forme des chemins de fichiers selon l'environnement dans lequel le programme est executé :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public String gestionCheminFichier(String e_cheminRelatif, String e_nomFichier) { // Déclaration des variables locales String s_nomLongLocalFichier = null; String l_cheminJREJava = null; String l_separateurDeFichier = null; String[] l_tableauRepertoiresUnitaires = null; ClassLoader l_classloader = null; URL l_url = null; l_cheminJREJava = System.getProperty("java.home"); System.out.println("Le chemin de la JRE java est : " + l_cheminJREJava); l_separateurDeFichier = System.getProperty("file.separator"); l_tableauRepertoiresUnitaires = l_cheminJREJava.split(Pattern.quote(l_separateurDeFichier)); // Pour éviter des problèmes de différence d'arborescence entre l'excution sous Eclipse // et l'execution via un script dos ou shell, il faut utiliser les 2 lignes d'instructions suivantes l_classloader = Thread.currentThread().getContextClassLoader(); l_url = l_classloader.getResource(e_cheminRelatif + e_nomFichier); System.out.println("L'URL est : " + l_url); // Dans Eclipse le chemin de la JRE est : // C:\Program Files\Eclipse_DEV\Jdks\jdk1.8\jre // Sous DOS le chemin est : C:\Program Files (x86)\Java\jre1.8.0_91 // On recupère le 3éme membre du tableau pour voir s'il est égale à Eclipse_DEV (environnement Eclipse) // ou non (environnement DOS) if ("Eclipse_DEV".equals(l_tableauRepertoiresUnitaires[2])) { // Le getFile() de URL imprime en premier caractère un slash (/) que nous ne souhaitons pas d'ou le substring s_nomLongLocalFichier = l_url.getFile().substring(1); } else { // Le getFile() de URL imprime en premier caractère un slash (/) que nous ne souhaitons pas d'ou le substring // Exemple : /file:/C:/User/E524761/eclipse/workspace/TraitementReferentielFlux/bin/requetesSQL/CreationTable_SuiviEntreeCumul.sql // Il faut supprimer la chaine de caractère suivante : /file:/ s_nomLongLocalFichier = l_url.getFile().substring(6); } System.out.println("Le nom long du fichier est : " + s_nomLongLocalFichier); return s_nomLongLocalFichier; }
Quand je l'execute sous Eclipse, je n'ai pas de problème. Le fichier CreationTable_SuiviCumul.sql est bien trouvé et pris en compte.
Par contre lorsque j'execute le programme sous DOS, j'ai l'erreur suivante :
Est ce que quelqu'un aurait une idée....
Caused by: java.io.FileNotFoundException: C:\TEMP\referentiel\bin\TraitementReferentielFlux.jar!\requetesSQL\CreationTable_SuiviCumul.sql (Le chemin d?accès spécifié est introuvable)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
...
Par avance merci.
Bien à vous.
Partager