2012-01-06 16 views
5

मैं अपने सर्वर-साइड जावा कोड के अंदर कुछ प्रोसेसिंग करने के लिए एक बाइनरी छवि फ़ाइल लोड करने का प्रयास कर रहा हूं। मैं वर्तमान में पैकेज जहाँ मेरे क्रियान्वित वर्ग मौजूद है मेरी छवि रखने कर रहा हूँ और बुला:मैं टोमकैट में तैनात एक अनपेक्षित युद्ध फ़ाइल में संसाधन फ़ाइल कैसे पढ़ सकता हूं?

Image img = Image.getInstance(this.getClass().getResource("logo.png")); 

यह ठीक काम करता है जब मैं अपने विकास बॉक्स पर बिलाव चल रहा हूँ एक विस्फोट युद्ध सेटअप में, लेकिन जब मैं एक सर्वर के लिए तैनात टॉमकैट चल रहा है जहां यह युद्ध फाइलों को विस्फोट नहीं करता है, संसाधन प्राप्त करने के लिए कॉल शून्य वापस आता है।

Image img = Image.getInstance(this.getClass().getResource("/../../logo.png")); 

फिर, यह मेरे विकास बॉक्स पर काम करता है, लेकिन नहीं है जब मैं इसे कहीं और तैनात:

मैं अपने संदर्भ जड़ करने के लिए छवि चलती और इस तरह उस तक पहुंचने में की कोशिश की है।

क्या इस फ़ाइल तक पहुंचने का कोई बेहतर तरीका है? मैं क्या गलत कर रहा हूं?

धन्यवाद !!

+0

मैं शायद यह भी कहा कि मैं कर रहा हूँ होना चाहिए मेरे वेब ऐप बनाने के लिए मेवेन का उपयोग करना। मेरे पास एक पूर्ण उत्तर है जो मेरी समस्या को हल करता है, लेकिन मैं इसे अपने प्रश्न पर 8 घंटे तक पोस्ट नहीं कर सकता। – 11101101b

+0

संसाधनों को अपने "src/main/resource" निर्देशिका में रखें। फिर उन्हें एक्सेस करें: this.getClass()। GetResource ("/ logo.png"); या: थ्रेड.current थ्रेड()। GetContextClassLoader()। GetResource ("logo.png"); – 11101101b

उत्तर

5

, आपको यह सुनिश्चित छवि वास्तव में संग्रह में रख दिया जाता है बनाने के लिए चाहता हूँ।

अपने src/main/resources निर्देशिका में संसाधन रखें।

this.getClass().getResource("/logo.png"); 

या:: तो फिर उनके साथ का उपयोग

Thread.currentThread().getContextClassLoader().getResource("logo.png"); 

(ऊपर टिप्पणी से कोड के नमूने, लेकिन जवाब में डाल अधिक दिखाई दे सकता है)

+0

कृपया पहले मामले में फ़ाइल नाम से पहले '/' को न भूलें –

1

आप अपने classpath की जड़ में अपनी छवियों को रख दिया और इस कोशिश कर सकते: आप Maven का उपयोग कर निर्माण कर रहे हैं, तो

Thread.currentThread().getContextClassLoader() 
       .getResource("logo.png"); 
+1

+1 - आपके क्लासपाथ की जड़ से, WAR फ़ाइल के अंदर "वेब-आईएनएफ/कक्षाएं" है जहां कई लोग संसाधनों को कहेंगे। हालांकि वे वहां "छवियों/लोगो.png" जैसे फ़ोल्डर का उपयोग करके व्यवस्थित हो सकते हैं। – rfeak

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