web-dev-qa-db-fra.com

Vous essayez de comprendre ce que signifie réellement la propriété "user.dir"?

Donc, fondamentalement, lorsque j'ai recherché sur Google la propriété "user.dir", est-ce que j'ai ce lien vers une question similaire sur stackexchange: propriété Java "user.dir" - qu'est-ce que cela signifie exactement?

Donc, fondamentalement, la réponse donnée était: c'est le répertoire à partir duquel Java a été exécuté, où vous avez démarré la JVM. Ne doit pas nécessairement se trouver dans le répertoire personnel de l'utilisateur. Il peut s'agir de n'importe où où l'utilisateur est autorisé à exécuter Java.

Ce qui est correct, mais j'ai trouvé cet autre lien dans le contexte Android: Pourquoi System.getProperty ("user.dir") renvoie "/" comme la documentation dit, la propriété user.dir est le répertoire de travail de l'utilisateur, qui n'est pas nécessairement le même que le répertoire où votre apk est placé.

Ainsi, la première réponse la mieux votée du premier lien indique que le répertoire ne doit pas nécessairement se trouver dans le répertoire de base des utilisateurs tandis que l'autre dit "c'est le répertoire de travail des utilisateurs".

Maintenant, je suis terriblement confus et j'ai besoin d'aide à ce sujet.

6
Skylar Adams

Un répertoire personnel est associé à un utilisateur (pour un utilisateur MIke, cela ressemble souvent à /home/mike).

Un répertoire de travail est associé à un processus en cours d'exécution ; dans un shell, cela est souvent imprimé dans le cadre de l'invite, pour d'autres processus, il n'y a généralement pas de moyen direct de l'observer. Un utilisateur démarre généralement une session Shell dans son répertoire personnel mais peut ensuite s'en éloigner.

Le répertoire où Java est installé est une troisième chose sans rapport (et le répertoire dans lequel une application ou une bibliothèque Java est installée pourrait être une autre quatrième, non liée) Mais comme le dit documentation ,

Par défaut, les classes du package Java.io résolvent toujours les chemins d'accès relatifs par rapport au répertoire utilisateur actuel. Ce répertoire est nommé par la propriété système user.dir et est généralement le répertoire dans lequel la machine virtuelle Java a été invoquée).

En d'autres termes, user.dir est le répertoire de travail du processus qui a démarré le Java processus au moment où il a démarré le processus . S'il s'agit d'un Shell, c'est le répertoire vers lequel l'utilisateur Shell a basculé pour la dernière fois. Si Java a été appelé depuis un autre programme, par exemple un gestionnaire de fenêtres, c'est ce que ce programme avait comme fonctionnement) annuaire.

7
Kilian Foth

Comme indiqué dans la réponse précédente, user.dir est le "répertoire utilisateur actuel". Regardez les exemples suivants:
cd/chemin/vers/votre/pot
$ Java_HOME/bin/Java -jar myprogram.jar
(user.dir =/chemin/vers/votre/pot)

cd $ Java_HOME/bin
Java -jar /path/to/your/jar/myprogram.jar
(user.dir = $ Java_HOME/bin)

cd ~
$ Java_HOME/bin/Java -jar /path/to/your/jar/myprogram.jar
(user.dir = répertoire de base de l'utilisateur)