Я запускаю простую Java-программу со структурой каталогов ниже:
MyProject (A project in my Eclipse IDE)
'-- src
'-- Hello.java
В Hello.java я печатаю значение системного свойства 'user.dir'.
System.out.println(System.getProperty("user.dir"));
Скомпилированный файл для моего класса хранится в папке MyProject\bin
.
Когда я запускаю этот класс из Eclipse (щелкните правой кнопкой мыши по исходному файлу и выберите «Запустить как-> Приложение Java»),печатает путь до папки «MyProject», т.е. D:\Projects\Workspace\MyProject
в окне консоли.
Затем я использовал командное окно для запуска той же программы.Это то, что я набрал в окне:
D:\Projects\Workspace\MyProject\bin>java Hello
и вывод на консоль: D:\Projects\Workspace\MyProject\bin
bin
был добавлен к предыдущему значению для user.dir.
Далее, чтобы проверить больше, я на этот раз выполнил команду Java из другой папки в окне команд:
D:\Projects\Workspace\MyProject>java -classpath D:\Projects\Workspace\MyProject\bin Hello
На этот раз вывод в окне команд: D:\Projects\Workspace\MyProject
Thisзначение изменяется, когда я меняю папку в командном окне, и когда я запускаю программу из Eclipse, значением для user.dir является папка проекта.Итак, я хотел бы понять, что является основой для получения значения 'user.dir'?Как JVM решает, каким должно быть значение для user.dir?