2012-01-15 8 views
11

मेरे पास एक साधारण प्रोग्राम है जिसे छवियों को प्रदर्शित करने की आवश्यकता है। मुझे पता है कि यह ग्रहण से कोड कैसे चला रहा है और मुझे पता है कि यह एक JAR फ़ाइल से कैसे चल रहा है, लेकिन मुझे एक समाधान चाहिए जो दोनों मामलों में काम करता है।JAR या फ़ाइल सिस्टम से छवि आइकन लोड हो रहा है

ग्रहण परियोजना में इस तरह के रूप में है:

- Project (java) 
    - src 
    - controller 
     - Main.java 
    - ui 
     - Display.java 
    - images 
    - image.jpg 

कोड स्निपेट कि ग्रहण के भीतर से काम करता है:

ImageIcon image = new ImageIcon("images/image.jpg); 

एक है कि एक जार (एक जार फ़ाइल में सभी) के लिए काम करता है:

java.net.URL imgURL = getClass().getResource("/images/image.jpg"); 
ImageIcon image = new ImageIcon(imgURL); 

दोनों स्थितियों में काम करने वाले कोड का एक टुकड़ा प्राप्त करने के लिए मुझे क्या बदलने की आवश्यकता होगी ऑन?

+0

क्या आपने दोनों स्थितियों में दूसरे प्रयास की कोशिश की है? जो आपके लिए सिर्फ अपने प्रश्न का उत्तर दे सकता है (और आपको यहां जवाबों का इंतजार करने का समय बचा सकता है)! –

+2

<टैप करें, टैप करें, टैप करें ...> हैलो? क्या यह माइक चालू है? –

+0

@ होवरक्राफ्ट पूर्ण ईल्स। हां, जाहिर है मैंने दोनों मामलों में कोड स्निपेट दोनों की कोशिश की। – Martijn

उत्तर

9

src फ़ोल्डर के अंदर images फ़ोल्डर रखो, और Eclipse में अपना जार में लक्ष्य फ़ोल्डर (bin या classes, आम तौर पर) है, जो उन्हें classpath से उपलब्ध कर देगा में छवियों को कॉपी करेंगे, बस के रूप में यदि वे थे आपके ऐप का रिलीज़ संस्करण।

getResource() एक जार में नहीं दिखता है। यह क्लासलोडर के क्लासपाथ में दिखता है। चाहे छवि एक जार में है या नहीं, इस प्रकार महत्वपूर्ण नहीं है। यह कक्षा में होना चाहिए। और स्पष्ट रूप से ग्रहण (bin या classes, आमतौर पर) का लक्ष्य फ़ोल्डर ऐप के रनटाइम क्लासपाथ में है जब आप इसे ग्रहण से लॉन्च करते हैं।

+0

बहुत बहुत धन्यवाद! 'src' के अंदर 'छवियों' फ़ोल्डर को स्थानांतरित करना वास्तव में समाधान था। मेरा दूसरा कोड स्निपेट एक्लिप्स दोनों में अपरिवर्तित काम करता था और जब एक जार से चलाया जाता था। – Martijn

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