import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import static java.io.File.separatorChar; public class Test { public static void main(String[] args) { // recuperation du chemin de la classe String path = Test.class.getName().replace('.', '/') + ".class"; URL url = Test.class.getResource(path); try { path = URLDecoder.decode(url.toString(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } path = path.replace('/', separatorChar); // si la classe est dans un jar if (path.startsWith("jar:file:")) { // suppression de jar:file: dans l'url int index = path.indexOf("!"); path = path.substring(9, index); // suppression du path de la classe dans le jar index = path.lastIndexOf(separatorChar); path = path.substring(0, index); System.out.print("Repertoire contenant le jar: "); } // si la classe est directement dans un repertoire else { // suppression de la classe dans l'url int index = path.lastIndexOf(separatorChar); path = path.substring(0, index); // suppression du file: dans l'url path = path.substring(5, path.length()); // suppression du path du package si il est présent. Package pack = Test.class.getPackage(); if (null != pack) { String packPath = pack.toString().replace('.', separatorChar); if (path.endsWith(packPath)) path = path.substring(0, (path.length() - packPath.length())); } System.out.print("Répertoire contenant la classe: "); } // suppression du 1er caractère si l'os est un des windows if (System.getProperty ("os.name").startsWith("Windows")) path = path.substring(1, path.length()); System.out.println(path); } }