Властивість Java "user.dir" - що це означає?


100

Я хочу використовувати user.dirdir як базовий dir для моїх тестових одиниць (це створює багато файлів). Чи правильно це властивість вказувати на поточний робочий каталог (наприклад, встановлений командою 'cd')?


2
Як зазначено в stackoverflow.com/a/840229/3159183 , пам’ятайте, що -Duser.dirпрапор впливає на Fileоб’єкти (якщо їм не надано повний шлях), але не FileOutPutStreamоб’єкти. Якщо ви хочете забезпечити відповідність каталогу за замовчуванням для обох, вам слід cdперед запуском Java.
SeldomNeedy

Відповіді:


142

Це каталог, з якого javaбуло запущено, з якого ви запустили JVM. Не обов'язково знаходитись у домашньому каталозі користувача. Це може бути будь-де, де користувач має дозвіл на запуск Java.

Так що якщо ви cdв /somedir, а потім запустити програму, user.dirбуде /somedir.

Інша властивість, user.homeвідноситься до каталогу користувачів. Як і в /Users/myuserабо /home/myuserабо C:\Users\myuser.

Дивіться тут для отримання списку властивостей системи і їх опису.


Виправлено. Як щодо user.dir?
johnny-b-goode

3
Вже прочитайте його перед публікацією. Але "Довідник користувача" - це не найкраще пояснення, сподіваюся, ви згодні.
johnny-b-goode

Це означає, що в конфігурації tomcat для всіх версій Java, якщо user.dirвказує на /usr/share/tomcatта в config, ми додаємо щось подібне: file:./configтоді воно буде вказувати /usr/share/tomcat/configзавжди?
Марцін Капуста


8

Зазвичай це каталог, з якого було запущено ваше додаток (java) (робочий dir). "Зазвичай", оскільки його можна змінити, наприклад, коли ви запускаєте додатокRuntime.exec(String[] cmdarray, String[] envp, File dir)


Значення потрібне лише під час виконання тесту з джуніту системою maven.
johnny-b-goode

1
і коли ви змінюєте його на MAC, він порушує такі речі, як цей тест stackoverflow.com/questions/45130661/… :( :(
Дін Гіллер

3

System.getProperty("user.dir") вибирає каталог або шлях робочої області для поточного проекту

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.