2011-08-31 22 views
15

मुझे पता है कि एक ही मुद्दे को लक्षित करने के लिए अन्य प्रश्न हैं लेकिन बात यह है कि समाधान मेरे लिए काम नहीं करते हैं। मेरे पास एक छोटा सा उपकरण है जिसे मैं उन फ़ाइलों को पढ़ना चाहता हूं जिन्हें मैं चाहता हूं और संसाधनों के रूप में पैकेज करना चाहता हूं और अन्य परियोजनाओं पर निर्भर करता हूं (मैं ग्रहण हेलीओस का उपयोग कर रहा हूं) जिसे मैं एकल वर्गों के बजाय जार के रूप में रखना पसंद करूंगा।जार में संसाधनों को कैसे पैकेज करें

ग्रहण के भीतर एक आवेदन मैं के माध्यम से

String path = MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").getPath(); 
System.out.println(path); 
File file = new File(MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").toURI()); 
defaultSource = readSOURCEFile(file); 

मेरी संसाधनों का उपयोग कर सकते हैं के रूप में यदि और केवल यदि मैं उत्पादन पथ (संकलित स्रोतों) नहीं करता है, तो मैं अपने स्रोत फ़ोल्डर में डाल के तहत संसाधनों फ़ोल्डर जगह।

जब मैं प्रोजेक्ट को पैकेज करता हूं, रूट फ़ोल्डर में या कक्षा फ़ोल्डर में संसाधन बिल्कुल पैक नहीं होते हैं। अगर मेरे पास मेरे src फ़ोल्डर में संसाधन हैं तो यह src/संसाधनों के तहत पैक किया जाता है।

मैं निर्यात - रननेबल जार का उपयोग करता हूं, मैं क्या गलत कर रहा हूं? यदि मैं निर्यात-जार के साथ प्रयास करता हूं, तो मैं अपने स्रोतों और संसाधनों को सही तरीके से पैकेज कर सकता हूं लेकिन मुझे मुख्य वर्ग स्थापित करने में समस्याएं हैं और जार निष्पादित नहीं कर सकते हैं। मेनिफेस्ट सही है और कक्षा वहां है :-(

दूसरी समस्या: पैक किए गए जार में मुझे त्रुटि मिलती है: यूआरआई पदानुक्रमित नहीं है (जब मैं जार के भीतर संसाधनों को मैन्युअल रूप से स्थानांतरित करता हूं तो मैं जार निष्पादित कर सकता हूं)

अग्रिम धन्यवाद!

मैं कार्यक्षेत्र में सूत्रों का कहना है लिंक कर लिया है है एक ऐसा मुद्दा है?

उत्तर

14

मार्क एक "स्रोत फ़ोल्डर" ग्रहण के रूप में अपनी परियोजना के रूट फ़ोल्डर के अंतर्गत resource फ़ोल्डर (सही पर क्लिक करें फ़ोल्डर, "पथ बनाएं"> "स्रोत फ़ोल्डर के रूप में उपयोग करें" पर जाएं)। फिर इस तरह के संसाधन पढ़ें:

InputStream is = MyClass.class.getClassLoader().getResourceAsStream(name + ".SOURCE"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
String line = reader.readLine(); 
+0

यदि मैं करता हूं कि संसाधन सीधे रूट फ़ोल्डर के नीचे फ़ोल्डर संसाधनों के बिना पैक किए जाते हैं। – UMY

+0

आप सही हैं। संसाधन संसाधन से 'संसाधन' को हटाने के लिए मैंने तदनुसार कोड बदल दिया। यदि आप अपने जार में 'संसाधन' नामक निर्देशिका चाहते हैं तो इस फ़ोल्डर पदानुक्रम को बनाएं: '/संसाधन/संसाधन' और उपरोक्त वर्णित स्रोत पथ ग्रहण करने के लिए' /संसाधन' जोड़ें। कोड में संसाधन पथ में 'संसाधन' वापस भी जोड़ें। –

+0

यह एक साधारण बात है, लेकिन एसओ और आपके अद्भुत जवाब के बिना, मैं इतने घंटों तक घूम रहा हूं ... *** धन्यवाद !!!! *** –

संबंधित मुद्दे