Propriété Java «user.dir» - qu'est-ce que cela signifie exactement?

100

Je veux utiliser user.dirdir comme répertoire de base pour mes tests unitaires (cela crée beaucoup de fichiers). Est-il correct que cette propriété pointe vers le répertoire de travail courant (par exemple défini par la commande 'cd')?

johnny-b-goode
la source
2
Comme indiqué dans stackoverflow.com/a/840229/3159183 , gardez à l'esprit que l' -Duser.dirindicateur affecte les Fileobjets (s'ils ne disposent pas d'un chemin complet) mais pas les FileOutPutStreamobjets. Si vous voulez vous assurer que le répertoire par défaut correspond aux deux, vous devez cdavant de démarrer Java.
SeldomNeedy

Réponses:

142

C'est le répertoire d'où a javaété exécuté, où vous avez démarré la JVM. N'a pas besoin d'être dans le répertoire personnel de l'utilisateur. Cela peut être n'importe où où l'utilisateur a l'autorisation d'exécuter java.

Donc, si vous cddans /somedir, puis exécutez votre programme, user.dirsera/somedir .

Une propriété différente,, user.homefait référence à l'annuaire des utilisateurs. Comme dans /Users/myuserou /home/myuserou C:\Users\myuser.

Voir ici pour une liste des propriétés système et leurs descriptions.

whiskeyspider
la source
Corrigée. Qu'en est-il de user.dir?
johnny-b-goode
3
Déjà lu avant de poster. Mais "Répertoire de travail de l'utilisateur" n'est pas la meilleure explication, j'espère que vous êtes d'accord.
johnny-b-goode
Cela signifie-t-il que sur la configuration de tomcat pour toutes les versions de java, si user.dirpointe vers /usr/share/tomcatet dans la configuration, nous ajoutons quelque chose comme ceci: file:./configalors il pointera /usr/share/tomcat/configtoujours vers ?
Marcin Kapusta
8

Il s'agit généralement du répertoire dans lequel votre application (java) a été démarrée (répertoire de travail). "Généralement" car il peut être modifié, par exemple lorsque vous exécutez une application avecRuntime.exec(String[] cmdarray, String[] envp, File dir)

Evgeniy Dorofeev
la source
Une valeur n'est nécessaire que lors de l'exécution du test junit par le système maven.
johnny-b-goode
2
et quand vous le changez sur le MAC, cela casse des choses comme ce test stackoverflow.com/questions/45130661/… :( :(
Dean Hiller
3

System.getProperty("user.dir") récupère le répertoire ou le chemin de l'espace de travail pour le projet en cours


la source