¿Cómo obtener la ruta de un archivo JAR en ejecución?
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.
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.
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.