¿Cómo obtener la ruta de un archivo JAR en ejecución?

Resuelto Thiago Chaves asked hace 15 años • 33 respuestas

Mi código se ejecuta dentro de un archivo JAR, digamos foo.jar , y necesito saber, en el código, en qué carpeta se encuentra el foo.jar en ejecución .

Entonces, si foo.jar está en C:\FOO\, quiero obtener esa ruta sin importar cuál sea mi directorio de trabajo actual.

Thiago Chaves avatar Nov 26 '08 19:11 Thiago Chaves
Aceptado
return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation()
    .toURI()).getPath();

Reemplace "MiClase" con el nombre de su clase.

Obviamente, esto hará cosas extrañas si su clase se cargó desde una ubicación que no es un archivo.

Zarkonnen avatar Nov 26 '2008 12:11 Zarkonnen

La mejor solución para mí:

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");

Esto debería resolver el problema con espacios y caracteres especiales.

Fab avatar Jul 27 '2011 18:07 Fab