¿Cómo decide Java VM el valor de la propiedad del sistema user.dir?

Estoy ejecutando un programa Java simple con la siguiente estructura de directorios:

MyProject (A project in my Eclipse IDE)
 '-- src
      '-- Hello.java

En Hello.java, estoy imprimiendo el valor de la propiedad del sistema 'user.dir'.

System.out.println(System.getProperty("user.dir"));

l archivo @ Compilado para mi clase se almacena enMyProject\bin carpeta.

Cuando estoy ejecutando esta clase desde Eclipse (haga clic derecho en el archivo fuente y haga clic en Ejecutar como-> Aplicación Java), imprime la ruta hasta la carpeta 'MyProject', es decir,D:\Projects\Workspace\MyProject en la ventana de la consola.

Luego utilicé la ventana de comandos para ejecutar el mismo programa. Esto es lo que escribí en la ventana:

D:\Projects\Workspace\MyProject\bin>java Hello

y la salida en la consola es:D:\Projects\Workspace\MyProject\bin

bin se ha agregado al valor anterior para user.dir.

Además, para comprobar más, esta vez ejecuté el comando Java desde una carpeta diferente en la ventana de comandos:

D:\Projects\Workspace\MyProject>java -classpath D:\Projects\Workspace\MyProject\bin Hello

Esta salida de tiempo en la ventana de comandos es:D:\Projects\Workspace\MyProject

Este valor cambia cuando cambié la carpeta en la ventana de comandos, y cuando ejecuto el programa desde Eclipse, el valor para user.dir es la carpeta del proyecto. Entonces me gustaría entender, ¿cuál es la base para derivar el valor de 'user.dir'? ¿Cómo decide JVM, cuál debería ser el valor para user.dir?

Respuestas a la pregunta(5)

Su respuesta a la pregunta