2011-06-27 16 views
20

Tengo un pequeño script Estoy usando un parámetro para pasar en el directorio de ejecución actual, pero me gustaría hacerlo un poco más robusto.¿Cómo encontrar el directorio de ejecución base actual en groovy (o java)?

¿Cómo se puede encontrar el directorio base de ejecución?

+1

Q relacionadas: http://stackoverflow.com/questions/1163093/how -obtener-la-ruta-la-ejecución-script-in-groovy –

+0

Gracias Tim. He usado la respuesta aceptada en esa pregunta. –

Respuesta

13

Como referencia:

La respuesta aceptada sobre la cuestión here es lo que estaba buscando.

Como un ejemplo, cuando llamo a c:\scripts\MyScript.groovy desde c:\users\Scott\ quería saber c:\scripts\.

Esto se hace a través de este:

def scriptDir = getClass().protectionDomain.codeSource.location.path

Dónde scriptDir se asigna algo como:

/c:/scripts/MyScript.groovy

+5

Sí, su pregunta no está bien redactada. Necesitabas preguntar "cómo obtener la ubicación de la clase". Me alegro de que hayas encontrado la respuesta. –

29

Prueba esto:

System.getProperty("user.dir"); 
+0

Sí, esta fue la primera idea, pero solo da la ruta desde donde se llama el script, no donde vive el script (mi pregunta probablemente esté redactada de manera un poco confusa). –

11

Dependiendo del modelo de seguridad, si el System.getProperty(String) no está permitido, puede utilizar

String currentDir = new File(".").getAbsolutePath() 
+1

Esa solución no ayudará. El javadoc para 'getAbsolutePath()' dice throws * "' SecurityException' - Si no se puede acceder a un valor de propiedad del sistema requerido. "* –

+3

Debe ser un archivo nuevo (". "). GetAbsoluteFile(). GetParent() - esto quita el final "/" del camino – CodeMonkeyKing

Cuestiones relacionadas