คุณสมบัติ Java“ user.dir” - หมายความว่าอย่างไร


101

ฉันต้องการใช้user.dirdir เป็น dir พื้นฐานสำหรับการทดสอบหน่วยของฉัน (ซึ่งสร้างไฟล์จำนวนมาก) ถูกต้องหรือไม่ที่คุณสมบัตินี้ชี้ไปที่ไดเร็กทอรีการทำงานปัจจุบัน (เช่นกำหนดโดยคำสั่ง 'cd')


2
ตามที่ระบุไว้ในstackoverflow.com/a/840229/3159183โปรดทราบว่า-Duser.dirแฟล็กมีผลต่อFileอ็อบเจ็กต์ (หากไม่ได้กำหนดเส้นทางแบบเต็ม) แต่ไม่ใช่FileOutPutStreamอ็อบเจ็กต์ หากคุณต้องการให้แน่ใจว่าไดเร็กทอรีเริ่มต้นตรงกันสำหรับทั้งสองอย่างคุณควรcdเริ่ม Java ก่อน
ไม่ค่อยต้องการ 'Where's Monica' เมื่อ

คำตอบ:


144

เป็นไดเร็กทอรีที่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เสมอหรือไม่?
Marcin Kapusta


8

โดยทั่วไปนี่คือไดเร็กทอรีที่แอปของคุณ (java) เริ่มทำงาน (working dir) "โดยทั่วไป" เนื่องจากสามารถเปลี่ยนแปลงได้เช่นเมื่อคุณเรียกใช้แอปด้วยRuntime.exec(String[] cmdarray, String[] envp, File dir)


จำเป็นต้องใช้ค่าในระหว่างการดำเนินการทดสอบ junit โดยระบบ maven เท่านั้น
johnny-b-goode

2
และเมื่อคุณเปลี่ยนบน MAC มันจะแตกสิ่งต่างๆเช่นการทดสอบstackoverflow.com/questions/45130661/… :( :(
Dean Hiller

4

System.getProperty("user.dir") ดึงไดเร็กทอรีหรือพา ธ ของพื้นที่ทำงานสำหรับโปรเจ็กต์ปัจจุบัน


โดยปกติจะดึงไดเร็กทอรีการทำงานปัจจุบันเช่นคุณได้รับจากpwdคำสั่ง แต่ดูเหมือนว่าถ้าคุณรันด้วยเช่นmvn -f /path/to/projectmaven จะมีประสิทธิภาพcd /path/to/projectภายในก่อนที่จะรันการทดสอบ
rjmunro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.