Свойство Java «user.dir» - что именно оно означает?
100
Я хочу использовать user.dirкаталог в качестве базового каталога для моих модульных тестов (что создает много файлов). Верно ли, что это свойство указывает на текущий рабочий каталог (например, установленный командой 'cd')?
Как указано в 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.
Уже прочитал перед публикацией. Но «Рабочий каталог пользователя» - не лучшее объяснение, надеюсь, вы согласны.
johnny-b-goode
Означает ли это, что в конфигурации tomcat для всех версий java, если user.dirуказывает на /usr/share/tomcatи в config, мы добавляем что-то вроде этого: file:./configтогда он будет указывать /usr/share/tomcat/configвсегда?
Обычно это каталог, в котором было запущено ваше приложение (java) (рабочий каталог). «Обычно», потому что его можно изменить, например, когда вы запускаете приложение сRuntime.exec(String[] cmdarray, String[] envp, File dir)
-Duser.dir
флаг влияет наFile
объекты (если им не указан полный путь), но не наFileOutPutStream
объекты. Если вы хотите, чтобы каталог по умолчанию соответствовал обоим, вам следуетcd
перед запуском Java.Ответы:
Это каталог,
java
из которого вы запустили JVM. Не обязательно находиться в домашнем каталоге пользователя. Это может быть где угодно, где у пользователя есть разрешение на запуск java.Так что если вы
cd
в/somedir
, то запустите вашу программу,user.dir
будет/somedir
.Другое свойство,
user.home
относится к каталогу пользователя. Как в/Users/myuser
или/home/myuser
илиC:\Users\myuser
.См. Здесь список свойств системы и их описания.
источник
user.dir
указывает на/usr/share/tomcat
и в config, мы добавляем что-то вроде этого:file:./config
тогда он будет указывать/usr/share/tomcat/config
всегда?user.dir
"Рабочий каталог пользователя" в соответствии с Руководством по Java, Свойства системыисточник
Обычно это каталог, в котором было запущено ваше приложение (java) (рабочий каталог). «Обычно», потому что его можно изменить, например, когда вы запускаете приложение с
Runtime.exec(String[] cmdarray, String[] envp, File dir)
источник
System.getProperty("user.dir")
выбирает каталог или путь к рабочей области для текущего проектаисточник