Java “user.dir” özelliği - tam olarak ne anlama geliyor?


101

user.dirDir'i birim testlerim için temel dizin olarak kullanmak istiyorum (bu çok fazla dosya oluşturur). Bu özelliğin geçerli çalışma dizinini göstermesi doğru mu (örneğin, 'cd' komutuyla ayarlanmış)?


2
Stackoverflow.com/a/840229/3159183 adresinde belirtildiği gibi , -Duser.dirbayrağın Filenesneleri etkilediğini (onlara tam yol verilmemişse) ancak FileOutPutStreamnesneleri etkilemediğini unutmayın . Varsayılan dizinin her ikisi için de eşleştiğinden emin olmak istiyorsanız, cdJava'yı başlatmadan önce yapmalısınız.
Nadiren 'Monica Nerede' Needy

Yanıtlar:


144

Bu java, JVM'yi başlattığınız, çalıştırdığınız dizindir . Kullanıcının ana dizini içinde olması gerekmez. Kullanıcının java çalıştırma iznine sahip olduğu herhangi bir yerde olabilir.

Yani eğer cdiçine girerseniz /somedir, programınızı çalıştırın, user.dirolacaktır /somedir.

Farklı bir özellik, user.homekullanıcı dizinini ifade eder. Olduğu gibi /Users/myuserya /home/myuserya C:\Users\myuser.

Sistem özelliklerinin bir listesi ve açıklamaları için buraya bakın .


Düzeltildi. User.dir nasıl olur?
johnny-b-goode

3
Zaten göndermeden önce okuyun. Ancak "Kullanıcı çalışma dizini" en iyi açıklama değildir, umarım kabul edersiniz.
johnny-b-goode

Bu, tüm java sürümleri için tomcat yapılandırmasında şunun gibi bir şeyi user.dirişaret ediyor /usr/share/tomcatve bunu ekliyoruz demektir: file:./configo /usr/share/tomcat/configzaman her zaman işaret edecek mi?
Marcin Kapusta


8

Tipik olarak bu, uygulamanızın (java) başlatıldığı dizindir (çalışma dizini). "Tipik olarak" değiştirilebileceği için, örneğin bir uygulamayı birlikte çalıştırdığınızdaRuntime.exec(String[] cmdarray, String[] envp, File dir)


Bir değere yalnızca maven sistemi tarafından junit testi yürütülürken ihtiyaç duyulur.
johnny-b-goode

2
ve MAC'de değiştirdiğinizde, bu test stackoverflow.com/questions/45130661/… gibi şeyleri
bozar

4

System.getProperty("user.dir") mevcut proje için çalışma alanının dizinini veya yolunu getirir


Normalde, pwdkomuttan aldığınız gibi mevcut çalışma dizinini alır, ancak örneğin mvn -f /path/to/project, maven ile cd /path/to/projectçalıştırırsanız, testleri çalıştırmadan önce dahili olarak etkin bir şekilde çalışacak gibi görünür .
rjmunro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.