สำหรับผู้ที่ย้ายจาก Eclipse ไปยัง IntelliJ หรืออีกวิธีหนึ่งคือเคล็ดลับเมื่อทำงานกับไฟล์คุณสมบัติหรือไฟล์ทรัพยากรอื่น ๆ
มันน่าโมโห (เสียเวลาทั้งเย็นเพื่อหาคำตอบ) แต่ IDE ทั้งสองงานค่อนข้างแตกต่างกันเมื่อต้องค้นหาไฟล์ทรัพยากร / เหมาะสมเมื่อคุณต้องการเรียกใช้ภายในเครื่องจาก IDE ของคุณหรือระหว่างการดีบัก (บรรจุภัณฑ์กับ. jar นั้นแตกต่างกันมากเช่นกัน แต่ก็มีการบันทึกข้อมูลที่ดีกว่า)
สมมติว่าคุณมีการอ้างอิงเส้นทางสัมพัทธ์เช่นนี้ในโค้ดของคุณ:
new FileInputStream("xxxx.properties");
(ซึ่งสะดวกถ้าคุณทำงานกับไฟล์. คุณสมบัติเฉพาะของ env ที่คุณไม่ต้องการจัดแพคเกจร่วมกับ JAR ของคุณ)
IntelliJ
(ฉันใช้ 13.1 แต่อาจใช้ได้กับเวอร์ชันอื่น ๆ )
ไฟล์ xxxx.properties ต้องอยู่ที่ PARENT dir ของโปรเจ็กต์ ROOT เพื่อที่จะได้รับในรันไทม์เช่นนี้ใน IntelliJ (โปรเจ็กต์ ROOT คือที่ที่โฟลเดอร์ / src อยู่)
คราส
Eclipse มีความสุขเมื่อไฟล์ xxxx.properties อยู่ที่โปรเจ็กต์ ROOT เอง
ดังนั้น IntelliJ จึงคาดว่าไฟล์ .properties จะสูงขึ้น 1 ระดับจากนั้น Eclipse เมื่ออ้างอิงแบบนี้ !!
นอกจากนี้ยังส่งผลต่อวิธีที่คุณต้องรันโค้ดของคุณเมื่อคุณมีโค้ดบรรทัดเดียวกันนี้ (FileInputStream ใหม่ ("xxxx.properties");) ใน. jar ที่ส่งออกของคุณ เมื่อคุณต้องการความคล่องตัวและไม่ต้องการแพ็กเกจไฟล์. คุณสมบัติด้วย jar ของคุณคุณจะต้องรัน jar ดังต่อไปนี้เพื่ออ้างอิงไฟล์. คุณสมบัติอย่างถูกต้องจากบรรทัดคำสั่ง:
INTELLIJ ส่งออก JAR
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
ขวดส่งออก ECLIPSE
java -jar some.jar
โดยที่ Eclipse ที่เอ็กซ์พอร์ต jar ที่รันได้จะคาดหวังว่าไฟล์. คุณสมบัติที่อ้างอิงจะอยู่บนตำแหน่งเดียวกับที่ไฟล์. jar อยู่