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?

questionAnswers(5)

yourAnswerToTheQuestion