Propriedade “user.dir” do Java - o que exatamente significa?

100

Eu quero usar o user.dirdir como um dir base para meus testes de unidade (que cria muitos arquivos). É correto que esta propriedade aponta para o diretório de trabalho atual (por exemplo, definido pelo comando 'cd')?

johnny-b-goode
fonte
2
Conforme declarado em stackoverflow.com/a/840229/3159183 , lembre-se de que o -Duser.dirsinalizador afeta Fileobjetos (se não tiverem um caminho completo), mas não FileOutPutStreamobjetos. Se quiser garantir que o diretório padrão corresponda a ambos, você deve cdantes de iniciar o Java.
SeldomNeedy

Respostas:

142

É o diretório de onde javafoi executado, onde você iniciou o JVM. Não precisa estar no diretório inicial do usuário. Pode ser qualquer lugar onde o usuário tenha permissão para executar java.

Portanto, se você cdentrar em /somedir, execute seu programa, user.dirserá /somedir.

Uma propriedade diferente,, user.homerefere-se ao diretório do usuário. Como em /Users/myuserou /home/myuserou C:\Users\myuser.

Veja aqui uma lista de propriedades do sistema e suas descrições.

whiskeyspider
fonte
Corrigido. Que tal user.dir?
johnny-b-goode
3
Já leu antes de postar. Mas "Diretório de trabalho do usuário" não é a melhor explicação, espero que você concorde.
johnny-b-goode
Isso significa que na configuração do tomcat para todas as versões do java se user.direstiver apontando para /usr/share/tomcate na configuração adicionamos algo assim: file:./configentão ele estará apontando para /usr/share/tomcat/configsempre?
Marcin Kapusta
8

Normalmente, este é o diretório onde seu aplicativo (java) foi iniciado (diretório de trabalho). "Normalmente" porque pode ser alterado, por exemplo, quando você executa um aplicativo comRuntime.exec(String[] cmdarray, String[] envp, File dir)

Evgeniy Dorofeev
fonte
Um valor é necessário apenas durante a execução do teste junit pelo sistema maven.
johnny-b-goode
1
e quando você o altera no MAC, ele quebra coisas como este teste stackoverflow.com/questions/45130661/… :( :(
Dean Hiller
3

System.getProperty("user.dir") busca o diretório ou caminho da área de trabalho para o projeto atual


fonte