Путаница в текущем рабочем каталоге в методе файла getAbsolutePath

Aug 16 2020

GetAbsolutePath файла имеет тенденцию к тому, что если в конструкторе файла указан относительный путь или просто имя файла, то он разрешит абсолютный путь, добавив префикс текущего рабочего каталога.

Определение текущего рабочего каталога - это каталог, в котором мы запускаем нашу Java-программу. В моем примере моя java-программа находится внутриD:\my-app\src\App.java

Когда я делаю System.out.println(System.getProperty("user.dir"));

Тогда в идеале он должен печатать D:\my-app\src

Но на самом деле это печать D:\my-app

Почему это так?

Ответы

1 Joni Aug 16 2020 at 15:33

Когда вы запускаете приложение из IntelliJ, его рабочий каталог устанавливается в соответствии с тем, что установлено в «Рабочий каталог» в диалоговом окне «Запуск / отладка конфигураций» .

Там вы можете установить для рабочего каталога фиксированное значение, например D:\my-app\src. Другой вариант - использовать переменную пути . Список доступных переменных может зависеть от многих вещей - откройте диалоговое окно и посмотрите, что доступно. Один из вариантов, который я вижу, - $FileDir$это, как мне кажется, каталог с файлом исходного кода.

Sandy Aug 16 2020 at 15:29

Думаю, я нашел решение. На самом деле Intellij вызывал проблему, неявно устанавливая папку src в качестве исходной папки. Я нашел его, перейдя в настройку модуля в Intellij. Когда я запустил то же самое из командной строки, D:\my-app\src\выбран правильный рабочий каталог, т.е.