Propiedad "user.dir" de Java: ¿qué significa exactamente?

100

Quiero usar user.dirdir como directorio base para mis pruebas unitarias (eso crea muchos archivos). ¿Es correcto que esta propiedad apunte al directorio de trabajo actual (por ejemplo, establecido por el comando 'cd')?

Johnny B Goode
fuente
2
Como se indica en stackoverflow.com/a/840229/3159183 , tenga en cuenta que la -Duser.dirbandera afecta a los Fileobjetos (si no se les da una ruta completa) pero no a los FileOutPutStreamobjetos. Si desea asegurarse de que el directorio predeterminado coincida con ambos, debe hacerlo cdantes de iniciar Java.
SeldomNeedy

Respuestas:

142

Es el directorio desde donde javase ejecutó, donde inició la JVM. No tiene que estar dentro del directorio de inicio del usuario. Puede estar en cualquier lugar donde el usuario tenga permiso para ejecutar java.

Así que si cden /somedir, a continuación, ejecutar el programa, user.dirserá /somedir.

Una propiedad diferente user.home, se refiere al directorio de usuarios. Como en /Users/myusero /home/myusero C:\Users\myuser.

Consulte aquí para obtener una lista de propiedades del sistema y sus descripciones.

Whisky Araña
fuente
Corregido. ¿Qué hay de user.dir?
johnny-b-goode
3
Ya lo leí antes de publicarlo. Pero el "directorio de trabajo del usuario" no es la mejor explicación, espero que esté de acuerdo.
johnny-b-goode
¿Eso significa que en la configuración de tomcat para todas las versiones de Java, si user.direstá apuntando a /usr/share/tomcaty en la configuración agregamos algo como esto: file:./configentonces apuntará a /usr/share/tomcat/configsiempre?
Marcin Kapusta
8

Por lo general, este es el directorio donde se inició su aplicación (java) (directorio de trabajo). "Normalmente" porque se puede cambiar, por ejemplo, cuando ejecuta una aplicación conRuntime.exec(String[] cmdarray, String[] envp, File dir)

Evgeniy Dorofeev
fuente
Solo se necesita un valor durante la ejecución de la prueba junit por el sistema maven.
johnny-b-goode
2
y cuando lo cambia en el MAC, rompe cosas como esta prueba stackoverflow.com/questions/45130661/… :( :(
Dean Hiller
3

System.getProperty("user.dir") obtiene el directorio o la ruta del espacio de trabajo para el proyecto actual


fuente