it-swarm.com.de

Versuchen Sie zu verstehen, was die Eigenschaft "user.dir" tatsächlich bedeutet?

Wenn ich also gegoogelt habe, was die Eigenschaft "user.dir" ist, habe ich diesen Link zu einer ähnlichen Frage bei stackexchange erhalten: Java-Eigenschaft "user.dir" - was genau bedeutet das?

Die Antwort lautete also im Grunde: Es ist das Verzeichnis, in dem Java ausgeführt wurde und in dem Sie die JVM gestartet haben. Muss sich nicht im Home-Verzeichnis des Benutzers befinden. Es kann sich überall dort befinden, wo der Benutzer die Berechtigung hat, Java auszuführen.

Was in Ordnung ist, aber dann fand ich diesen anderen Link im Kontext Android: Warum gibt System.getProperty ("user.dir") "/" zurück As the Dokumentation sagt, die user.dir Eigenschaft ist das Benutzerarbeitsverzeichnis, das nicht unbedingt mit dem Verzeichnis identisch ist, in dem sich Ihre apk befindet.

Die erste Antwort mit der besten Abstimmung im ersten Link besagt, dass sich das Verzeichnis nicht im Home-Verzeichnis des Benutzers befinden muss, während die andere sagt: "Es ist das Arbeitsverzeichnis des Benutzers."

Jetzt bin ich furchtbar verwirrt und brauche Hilfe.

6
Skylar Adams

Ein Home-Verzeichnis ist einem Benutzer zugeordnet (für einen Benutzer MIke ist dies häufig so etwas wie /home/mike).

Ein Arbeitsverzeichnis ist einem laufenden Prozess zugeordnet . In einer Shell wird dies häufig als Teil der Eingabeaufforderung gedruckt, für andere Prozesse gibt es normalerweise keine direkte Möglichkeit, dies zu beobachten. Ein Benutzer startet normalerweise eine Shell-Sitzung in seinem Ausgangsverzeichnis, kann sich dann aber von diesem entfernen.

Das Verzeichnis, in dem Java installiert ist, ist eine dritte, nicht verwandte Sache) (und das Verzeichnis, in dem eine Java -Anwendung oder -Bibliothek installiert ist, könnte eine weitere, nicht verwandte vierte sein) Verzeichnis). Aber wie die Dokumentation sagt,

Standardmäßig lösen die Klassen im Java.io-Paket immer relative Pfadnamen für das aktuelle Benutzerverzeichnis auf. Dieses Verzeichnis wird von der Systemeigenschaft user.dir benannt und ist normalerweise das Verzeichnis, in dem die virtuelle Maschine Java) aufgerufen wurde.

Mit anderen Worten, user.dir ist das Arbeitsverzeichnis des Prozesses, der den Java -Prozess zum Zeitpunkt des Starts des Prozesses gestartet hat. Wenn dies eine Shell war, ist dies das Verzeichnis, in das der Shell-Benutzer zuletzt gewechselt hat. Wenn Java von einem anderen Programm, z. B. einem Fenstermanager, aufgerufen wurde, funktioniert alles, was dieses Programm hatte Verzeichnis.

7
Kilian Foth

Wie in der vorherigen Antwort angegeben, ist user.dir "aktuelles Benutzerverzeichnis". Schauen Sie sich einfach die nächsten Beispiele an:
CD/Pfad/zu/Ihrem/Glas
$ Java_HOME/bin/Java -jar myprogram.jar
(user.dir =/path/to/your/jar)

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
(Benutzer.dir = Benutzer-Ausgangsverzeichnis)