2010-12-14 15 views
13

Estoy ejecutando una aplicación Java desde la línea de comandos. ¿Puedo especificar un argumento de línea de comando para establecer el directorio de ejecución actual en algo distinto de donde se va a ejecutar realmente la aplicación?¿Puedes establecer el directorio en ejecución actual desde la línea de comandos java?

+0

No estoy seguro de que este es un duplicado, pero puede ser útil http://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java – khachik

+0

Sí, que puede ser útil. El nuevo archivo (padre, ruta) podría funcionar. Tendré que intertarlo. La razón por la que publiqué esta pregunta es que estoy tratando de usar un generador de perfiles en un dll que carga mi aplicación. Como esencialmente tengo que perfilar java.exe, el directorio de trabajo actual se establece en mi carpeta jdk y descarta mis rutas relativas en mi aplicación. – user538442

+0

Su generador de perfiles debe tener una opción para establecer el directorio de inicio. ¿O tal vez es posible escribir un archivo BAT y decirle a Profiler que lo ejecute? –

Respuesta

0

Si desea cambiar el directorio actual, deberá usar JNI e invocar una API nativa desde su código Java. Por ejemplo, para Windows que usaría SetCurrentDirectory

+0

Estoy usando JNI, así que esta podría ser una posible solución. – user538442

+0

Esto haría su código completamente no portátil, por supuesto. –

3

Si todo esto posible prefiero utilizar una secuencia de comandos para ejecutar la aplicación java y establezca el directorio en el guión:

#!/bin/sh 
cd <your dir> 
java <some arguments> 

El JNI-solución puede afectar a todos tipos de rutas relativas en su aplicación; por ejemplo, el classpath que ingresó.

33

Hay un argumento de JVM -Duser.dir que se puede usar para establecer el directorio de trabajo para JVM.

0

Encontré esta publicación SO y me ayudó a resolver mi problema. Aunque quería compartir algo específico sobre IntelliJ que podría hacer tropezar a alguien más.

me han publicado una imagen debajo de donde se utiliza la bandera -Duser.dir y también el campo de texto directorio de trabajo se rellena.

"Working Directory" field has lower precedence than the -Duser.dir flag.

En esta situación, el directorio de trabajo se establecerá en "JarLearning" en lugar de "2ndTry".

Cuestiones relacionadas