Cercando di capire su cosa significa in realtà "user.dir"?

3

Quindi in pratica ho cercato su Google quale proprietà "user.dir" ho ottenuto questo link a una domanda simile su stackexchange: Java" user.dir "- cosa significa esattamente?

Quindi sostanzialmente la risposta data era: è la directory da dove è stato eseguito Java, dove hai avviato la JVM. Non deve essere all'interno della home directory dell'utente. Può essere ovunque dove l'utente ha il permesso di eseguire Java.

Che va bene, ma poi ho trovato questo altro link nel contesto Android: Perché System.getProperty ("user.dir") return "/" Come dice la documentazione, la proprietà user.dir è la directory di lavoro dell'utente, che non è necessariamente uguale alla directory in cui è posizionato il tuo apk.

Quindi la prima risposta più votata nel primo link dice che la directory non deve essere all'interno della home directory degli utenti mentre l'altra dice "è la directory di lavoro dell'utente."

Ora sono terribilmente confuso e ho bisogno di aiuto su questo.

    
posta Skylar Adams 19.11.2015 - 10:30
fonte

2 risposte

6

Una home directory è associata a un utente (per un utente MIke, questo è spesso qualcosa come /home/mike ).

Una directory di lavoro è associata a un processo in esecuzione ; in una shell questo è spesso stampato come parte del prompt, per altri processi di solito non esiste un modo diretto di osservarlo. Un utente in genere avvia una sessione di shell nella propria home directory ma può quindi allontanarsi da essa.

La directory in cui è installato Java è una terza cosa non correlata (e la directory in cui è installata un'applicazione o una libreria java potrebbe essere un'altra directory quarta non correlata). Ma come dice documentazione ,

By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.

In altre parole, user.dir è la directory di lavoro del processo che ha avviato il processo Java nel momento in cui ha avviato il processo . Se si trattava di una shell, è la directory in cui l'utente della shell era passato l'ultima volta. Se Java è stato chiamato da un altro programma, ad es. un gestore di finestre, è quello che il programma aveva come directory di lavoro.

    
risposta data 19.11.2015 - 10:45
fonte
2

Come risposta precedente dice user.dir è "directory utente corrente" Basta guardare ai prossimi esempi:
cd / percorso / al / tuo / jar
$ 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
(user.dir = home directory dell'utente)

    
risposta data 23.11.2015 - 12:20
fonte

Leggi altre domande sui tag