¿Hay alguna manera de determinar la ubicación actual del sistema de archivos de la clase ejecutada desde el código de esta clase, en tiempo de ejecución, dado que se ejecuta con el comando java
?Cómo obtener la ruta del sistema de archivos de la clase que se está ejecutando
Por ejemplo para la clase siguiente:
public class MyClass{
public static void main(String[] args){\
new MyClass().doStuff();
}
private void doStufF(){
String path = ... // what to do here?!
System.out.println("Path of class being invoked: " + path);
}
}
¿Hay alguna manera de obtener e imprimir la ruta correcta en el sistema de ficheros de archivo MyClass.class acaba de ser invocado?
De manera similar, si invoco el archivo jar del comando java -jar
, ¿hay alguna manera de obtener una ruta de archivo jar dentro de las clases dentro de ese contenedor?
P.S.:Por favor, ¡no haga ninguna suposición sobre el directorio de trabajo del cual se invoca el comando java
!
Tenga cuidado al hacer esto: si su archivo de clase está en algún lugar de un directorio que tiene un espacio, la cadena devuelta (que es la parte de la ruta de una URL, que getLocation() devuelve, y por lo tanto está codificada en la URL) contendrá '% 20' en lugar de espacios. –
@JandeVos El uso del constructor 'File (java.net.URI)' parece solucionar ese problema. – Spooky
@ Comentario de Spooky: debe ser 'archivo final f = new File (MyClass.class.getProtectionDomain(). GetCodeSource(). GetLocation(). GetURI(). GetPath());' –