Como a Java VM decide o valor da propriedade user.dir System?
Estou executando um programa Java simples com a estrutura de diretórios abaixo:
MyProject (A project in my Eclipse IDE)
'-- src
'-- Hello.java
No Hello.java, estou imprimindo o valor da propriedade do sistema 'user.dir'.
System.out.println(System.getProperty("user.dir"));
O arquivo compilado para minha classe está sendo armazenado emMyProject\bin
pasta.
Quando estou executando esta classe no Eclipse (clique com o botão direito do mouse no arquivo de origem e clique em Executar como-> Aplicativo Java), ele imprime o caminho até a pasta 'MyProject', ou seja,D:\Projects\Workspace\MyProject
na janela do console.
Então eu usei a janela de comando para executar o mesmo programa. Isto é o que eu digitei na janela:
D:\Projects\Workspace\MyProject\bin>java Hello
e a saída no console é:D:\Projects\Workspace\MyProject\bin
bin
foi adicionado ao valor anterior para user.dir.
Além disso, para verificar mais, desta vez executei o comando Java de uma pasta diferente na janela de comando:
D:\Projects\Workspace\MyProject>java -classpath D:\Projects\Workspace\MyProject\bin Hello
O tempo de saída na janela de comando é:D:\Projects\Workspace\MyProject
Esse valor muda quando alterei a pasta na janela de comando e, quando estou executando o programa no Eclipse, o valor para user.dir é a pasta do projeto. Então, eu gostaria de entender, qual é a base para derivar o valor de 'user.dir'? Como a JVM decide, qual deve ser o valor para user.dir?