आप में से उन लोगों के लिए जो ग्रहण से लेकर इंटेलीज तक या इधर-उधर जाते हैं, संपत्ति फाइलों या अन्य संसाधन फ़ाइलों के साथ काम करते समय एक टिप है।
जब आप अपने आईडीई से स्थानीय स्तर पर या डीबगिंग के दौरान संसाधन चलाना चाहते हैं, तो इसकी जानकारी प्राप्त करना (मेरी पूरी शाम का पता लगाने के लिए), लेकिन दोनों आईडीई का काम काफी अलग है। (.Jar की पैकेजिंग भी काफी अलग है, लेकिन यह बेहतर दस्तावेज है।)
मान लीजिए कि आपके पास अपने कोड में इस तरह एक रिश्तेदार पथ रेफरल है:
new FileInputStream("xxxx.properties");
(जो सुविधाजनक है यदि आप env विशिष्ट .properties फ़ाइलों के साथ काम करते हैं जो आप अपने JAR के साथ पैकेज नहीं करना चाहते हैं)
IntelliJ
(मैं 13.1 का उपयोग करता हूं, लेकिन अधिक संस्करणों के लिए मान्य हो सकता है)
फ़ाइल xxxx.properties को प्रोजेक्ट रूट के PARIR dir में होना चाहिए ताकि IntelliJ में इस तरह रनटाइम पर उठाया जा सके। (परियोजना रूट जहां / src फ़ोल्डर में रहता है)
ग्रहण
एक्लिप्स तभी खुश है जब xxxx.properties फ़ाइल प्रोजेक्ट रूट पर ही है।
तो IntelliJ को उम्मीद है। फ़ाइल में 1 स्तर अधिक होने पर।
यह आपके निर्यात के तरीके को प्रभावित करने के तरीके को भी प्रभावित करता है, जब आपके पास अपने निर्यात .jar में कोड की इसी पंक्ति (नई FileInputStream ("xxxx.properties");) होती है। जब आप चुस्त रहना चाहते हैं और अपने जार के साथ .properties फ़ाइल को पैकेज नहीं करना चाहते हैं तो आपको कमांड लाइन से सही ढंग से .properties फ़ाइल को संदर्भित करने के लिए नीचे दिए जार को निष्पादित करना होगा।
INTELLIJ निर्यात जार
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
ईसीएलआईपीएसई एक्सपोर्टेड जार
java -jar some.jar
जहां एक्लिप्स एक्सपोर्ट करने योग्य जार एक्सपोर्टेड .properties फाइल को उसी स्थान पर होने की उम्मीद करेगा, जहां .jar फ़ाइल होती है।