Estoy ejecutando un archivo jar en varias ubicaciones y estoy tratando de averiguar cómo obtener la ubicación del archivo jar que se está ejecutando.¿Cómo obtengo el directorio en el que se encuentra el archivo jar que se está ejecutando actualmente?
Respuesta
No es una solución perfecta, pero la ubicación Esto devolverá la clase de la base de código:
getClass().getProtectionDomain().getCodeSource().getLocation()
¿No es perfecto? Esto es realmente el más confiable ya que las otras sugerencias propuestas devuelven el ** directorio de trabajo actual ** que no es per se la carpeta donde se encuentra el JAR. P.ej. si haces 'cd/somefolder' y luego' java -jar/otherfolder/file.jar' entonces otras sugerencias devolverán '/ somefolder'. +1. – BalusC
¿Entonces esta solución realmente devolverá '/ otherfolder'? – aioobe
@aioobe: Exactamente. – BalusC
new File(".").getAbsolutePath()
+1 ¡Ah, eso es inteligente! –
Como dijo @Will Hartung, "el directorio actual puede no tener nada que ver con dónde se encuentra el jar de ejecución". – aioobe
Hay un código mucho más pequeño que este. 'new File (" "). getAbsolutePath();' – MacStevins
esto parece una pregunta dudoso para comenzar con.
Si estoy ejecutando código en Java, se está quedando sin rt.jar y probablemente una docena de otros jarrones.
Los primeros archivos que se ejecutarán estarán en rt.jar, rt.jar llamará a su principal.
Si escribe una clase que le permite saber qué jar está ejecutando y esa clase se mueve a un jar diferente, entonces ya no se está "quedando sin" el jar que contenía su main.
Creo que lo que quiere es la línea de comando que inició su aplicación, pero si primero hizo CD en el directorio, puede que no tenga la ruta completa a su jar.
Además, puede que no esté ejecutándose desde un contenedor: alguien podría haber expandido su jar en clases en un directorio y lo está ejecutando de esa manera.
Personalmente, simplemente envolvería su programa en un iniciador de script de shell donde podría ver su ubicación actual y la ubicación del archivo jar y luego pasarlas a Java.
Buen punto, nuestra aplicación está envuelta en un gran contenedor (desafortunadamente). – darrickc
considera la siguiente función
//This method will work on Windows and Linux as well.
public String getPath(){
URL rootPath = getClass().getResource("");
String URI=rootPath.toString().substring(9);
String[] currentPath=URI.split("myjar.jar!");
currentPath[0]=currentPath[0].replaceAll("%20"," ");
return currentPath[0];
}
Aquí es mi método para obtener ruta de ejecución desde cualquier lugar
private static String GetExecutionPath(){
String absolutePath = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
absolutePath = absolutePath.substring(0, absolutePath.lastIndexOf("/"));
absolutePath = absolutePath.replaceAll("%20"," "); // Surely need to do this here
return absolutePath;
}
puede usar URLDecoder.decode (directoryPath, "UTF-8"); para reemplazar% 20 con espacio –
también puede usar absolutePath.lastIndexOf (File.separator) para admitir todo el sistema operativo –
- 1. ¿Cómo obtengo el HMODULE para el código que se está ejecutando actualmente?
- 2. Obtenga el nombre del método que se está ejecutando actualmente
- 3. Buscar ruta al archivo que se está ejecutando actualmente
- 4. Ruby: obtener el archivo que se está ejecutando
- 5. ¿Obtener instancia de la actividad que se está ejecutando actualmente?
- 6. ¿Cómo obtengo el identificador de ventana dando el nombre del proceso que se está ejecutando?
- 7. ¿Cómo obtener el nombre de la prueba que se está ejecutando actualmente en spock?
- 8. ¿Obtiene el objeto TThread para el subproceso que se está ejecutando actualmente?
- 9. Obtener el nombre del esquema del procedimiento almacenado que se está ejecutando actualmente
- 10. Maven: incluido el archivo jar que no se encuentra en el repositorio público
- 11. Mostrar el nombre de la función que se está ejecutando actualmente
- 12. Determinando el caso de prueba que se está ejecutando actualmente por Nunit
- 13. Capture el sonido que se está reproduciendo actualmente
- 14. ¿Puedo usar classpath para reemplazar un archivo en un jar que se está ejecutando?
- 15. ¿Cómo obtener la ubicación de la DLL que se está ejecutando actualmente?
- 16. ¿Cómo obtener el sistema operativo en el que se está ejecutando PHP?
- 17. Obtener el nombre del método actual que se está ejecutando
- 18. iPhone SDK- Error del depurador: El programa que se está depurando no se está ejecutando
- 19. Obtener el directorio donde se encuentra el código ejecutado
- 20. CodeIgniter: ¿Cómo se 'resalta' el enlace de la página en la que el usuario se encuentra actualmente?
- 21. ¿Cómo puede encontrar el número de procesador en el que se está ejecutando un subproceso?
- 22. ¿Se está creando una clave según el dispositivo en el que se encuentra la clave? (Linux)
- 23. Vim: abra la nueva pestaña del explorador con el directorio del archivo que está actualmente en
- 24. donde se encuentra el archivo JSTL .tld?
- 25. Cómo obtener la ruta de acceso del código javascript que se está ejecutando actualmente
- 26. ¿Cómo encontrar el puerto local en el que se está ejecutando una instancia de raíles?
- 27. Cómo determinar si una aplicación web se está ejecutando actualmente
- 28. Cómo crear un hilo que corre todo el tiempo que mi aplicación se está ejecutando
- 29. En Django, ¿cómo sé el usuario que está conectado actualmente?
- 30. cómo ver qué código javascript se está ejecutando actualmente?
La mejor opción es:. 'Cadena de ruta = new File ("") getCanonicalPath () .toString(); ' – PSyLoCKe