Proprietà Java "user.dir": cosa significa esattamente?


100

Voglio usare user.dirdir come directory di base per i miei unit test (che crea molti file). È corretto che questa proprietà punti alla directory di lavoro corrente (es. Impostata dal comando "cd")?


2
Come indicato in stackoverflow.com/a/840229/3159183 , tieni presente che il -Duser.dirflag influisce sugli Fileoggetti (se non viene fornito un percorso completo) ma non sugli FileOutPutStreamoggetti. Se vuoi assicurarti che la directory predefinita corrisponda per entrambi, dovresti cdprima di avviare Java.
Raramente

Risposte:


142

È la directory da cui è javastato eseguito, da cui è stata avviata la JVM. Non deve essere nella directory home dell'utente. Può essere ovunque l'utente abbia il permesso di eseguire java.

Quindi, se cdentri /somedir, esegui il tuo programma, user.dirsarà /somedir.

Una proprietà diversa,, si user.homeriferisce alla directory dell'utente. Come in /Users/myusero /home/myusero C:\Users\myuser.

Vedi qui per un elenco delle proprietà di sistema e le loro descrizioni.


Corretto. Che ne dici di user.dir?
johnny-b-goode

3
Già letto prima di postare. Ma "Directory di lavoro dell'utente" non è una spiegazione migliore, spero che tu sia d'accordo.
johnny-b-goode

Significa che nella configurazione di Tomcat per tutte le versioni di Java se user.dirpunta a /usr/share/tomcate in config aggiungiamo qualcosa del genere: file:./configquindi punterà /usr/share/tomcat/configsempre a?
Marcin Kapusta


8

In genere questa è la directory in cui è stata avviata la tua app (java) (directory di lavoro). "Tipicamente" perché può essere modificato, ad esempio quando esegui un'app conRuntime.exec(String[] cmdarray, String[] envp, File dir)


Un valore è necessario solo durante l'esecuzione del test junit da parte del sistema Maven.
johnny-b-goode

2
e quando lo cambi sul MAC, interrompe cose come questo stackoverflow.com/questions/45130661/… :( :(
Dean Hiller

3

System.getProperty("user.dir") recupera la directory o il percorso dell'area di lavoro per il progetto corrente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.