Obtener el directorio del jar donde está mi clase
Artículo por Club Developers · 06 junio 2006
3632 vistas
Veamos un trozo de código que permiter recuperar el directorio que contiene el fichero jar donde está la clase en curso.
Si la clase no está en un jar, el directorio será el que haya en el CLASSPATH.
Por ejemplo, si la clase es:
C:\sources\java\lang\Object.class
El directorio encontrado será:
C:\sources
Veamos el código:
Nota: Para JDK inferior a 1.4 tendremos que usar URLDecoder.decode(String uneURL).
Nota2: para llamar este código desde un bloque static tendremos que cambiar getClass() por NombreDeLaClase.class.
Si la clase no está en un jar, el directorio será el que haya en el CLASSPATH.
Por ejemplo, si la clase es:
C:\sources\java\lang\Object.class
El directorio encontrado será:
C:\sources
Veamos el código:
java
  // quitamos la clase o el jar del path de la url   int index = path.lastIndexOf("/");   path = path.substring(0, index);   if (path.startsWith("jar:file:"))   {    // quitamos el jar:file: de la url de un jar    // asà como el path de la clase en el jar    index = path.indexOf("!");    path = path.substring(9, index);   }   else   {    path = path.substring(5, path.length());    Package pack = getClass().getPackage();    if (null != pack)    {     if (path.endsWith(packPath))     {      path = path.substring(0, (path.length() - packPath.length()));     }    }   }
Nota: Para JDK inferior a 1.4 tendremos que usar URLDecoder.decode(String uneURL).
Nota2: para llamar este código desde un bloque static tendremos que cambiar getClass() por NombreDeLaClase.class.