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')?
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.
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?
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)
-Duser.dir
sinalizador afetaFile
objetos (se não tiverem um caminho completo), mas nãoFileOutPutStream
objetos. Se quiser garantir que o diretório padrão corresponda a ambos, você devecd
antes de iniciar o Java.Respostas:
É o diretório de onde
java
foi 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ê
cd
entrar em/somedir
, execute seu programa,user.dir
será/somedir
.Uma propriedade diferente,,
user.home
refere-se ao diretório do usuário. Como em/Users/myuser
ou/home/myuser
ouC:\Users\myuser
.Veja aqui uma lista de propriedades do sistema e suas descrições.
fonte
user.dir
estiver apontando para/usr/share/tomcat
e na configuração adicionamos algo assim:file:./config
então ele estará apontando para/usr/share/tomcat/config
sempre?user.dir
é o "diretório de trabalho do usuário" de acordo com o Tutorial Java, Propriedades do sistemafonte
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 com
Runtime.exec(String[] cmdarray, String[] envp, File dir)
fonte
System.getProperty("user.dir")
busca o diretório ou caminho da área de trabalho para o projeto atualfonte