Bonjour à tous,
Comment récuperer le chemin vers le package de la classe en cours ?
D'avance merci,
TSalm
Bonjour à tous,
Comment récuperer le chemin vers le package de la classe en cours ?
D'avance merci,
TSalm
Bonjour.
Attention: ça lance une NullPointerException dans une classe qui n'est pas dans un package.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.getClass().getPackage().getName();
Bon, le code dans la FAQ ne fonctionne pas pour moi...
Mais la voici un peu modifier et qui fonctionne sur mon bon vieux Windows
[edit: ce code retourne le chemin d'une classe]
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 /*** * Retourne le chemin du dossier qui contient le package d'une classe * @return */ public static String getPathClass(Class myClass) { String path = '/' + myClass.getName().replace('.','/') + ".class"; URL url = myClass.getResource(path); try { path = URLDecoder.decode(url.toString(), "UTF-8"); } catch (Exception exc) {System.out.println("Exception "+exc.getMessage());} // suppression de la classe ou du jar du path de l'url int index = path.lastIndexOf("/"); path = path.substring(0, index); if (path.startsWith("jar:file:")) { // suppression de jar:file: de l'url d'un jar // ainsi que du path de la classe dans le jar index = path.indexOf("!"); path = path.substring(9, index); } else { // suppresion du file: de l'url si c'est une classe en dehors d'un jar // et suppression du path du package si il est présent. path = path.substring(5, path.length()); Package pack = myClass.getPackage(); if (null != pack) { String packPath = pack.toString().replace('.', '/'); if (path.endsWith(packPath)) { path = path.substring(0, (path.length() - packPath.length())); } } } // Si Windows => enlever le 1er \ if (System.getProperty("os.name").startsWith("Windows")) { path = path.substring(1,path.length()); } return path; }
Oups, le code précédent retourne le chemin d'une classe. Pour retourner le chemin du package d'une classe :
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 public static String getPathPackage(Class myClass) { String path = null; URL url = myClass.getResource("/"); try { path = URLDecoder.decode(url.toString(), "UTF-8"); } catch (Exception exc) {System.out.println("Exception "+exc.getMessage());} // Supprime le "file:" if (path.startsWith("file:")) path = path.substring("file:".length(),path.length()); // Supprime le dernier séparateur : if (path.endsWith("/")) path = path.substring(0,path.length()-1); // Si Windows => enlever le 1er \ if (System.getProperty("os.name").startsWith("Windows")) { path = path.substring(1,path.length()); } return path; }
Partager