2010-04-07 11 views
41

का उपयोग कर संसाधन प्राप्त करें मुझे जावा प्रोजेक्ट में संसाधन छवि फ़ाइल प्राप्त करने की आवश्यकता है। क्या मैं कर रहा हूँ है:getResource()

unibo/ 
    lsb/ 
    res/ 
     dice.jpg 
    test/ 
    ..../ /* other packages */ 

तथ्य यह है कि मैं हमेशा के रूप में फ़ाइल मौजूद नहीं है मिलता है:

URL url = TestGameTable.class.getClass(). 
      getClassLoader().getResource("unibo.lsb.res/dice.jpg"); 

निर्देशिका संरचना निम्नलिखित है। मैंने कई अलग-अलग पथों की कोशिश की है, लेकिन मैं इस मुद्दे को हल नहीं कर सका। कोई संकेत?

उत्तर

79
TestGameTable.class.getResource("/unibo/lsb/res/dice.jpg"); 
  • प्रमुख स्लेश पथ
  • आप वर्ग पर सीधे getResource() कॉल कर सकते हैं में classpath की जड़
  • डॉट्स के बजाय स्लैश निरूपित करने के लिए।
+3

बिंदु पर! (15ch) – BalusC

+4

बस जागरूक रहें कि 'कक्षा # getResource' और' ClassLoader # getResource' किसी स्थान पर नाम को मानचित्रित करने के लिए विभिन्न रणनीतियों का उपयोग कर रहे हैं। लुकाबी का उदाहरण वास्तव में क्लास ('SomeClass.class.getClass()') से क्लासलोडर का उपयोग करता है, लेकिन शायद यह एक गलती है और उद्देश्य पर नहीं। – jarnbjo

+0

@jambjo हाँ, मुझे लगता है कि यह एक गलती है। – Bozho

9

स्पष्ट रूप से वर्ग के नाम लिखने के बजाय आप

this.getClass().getResource("/unibo/lsb/res/dice.jpg"); 
+9

या ''' के बिना बस' getClass() '। – lmichelbacher

+4

यह माना जा रहा है कि आप एक स्थिर संदर्भ में नहीं हैं। – flungo

2

इस्तेमाल कर सकते हैं आप स्थिर विधि से फोन कर रहे हैं, उपयोग:। TestGameTable.class.getClassLoader() getResource ("dice.jpg") ;

+1

स्थिर विधि के अलावा अन्य कॉलिंग के बारे में क्या? – manetsus

1

ध्यान में रखना एक बात यह है कि यहां प्रासंगिक पथ आपके वर्ग के फ़ाइल सिस्टम स्थान से संबंधित पथ है ... आपके मामले में TestGameTable। कक्षा। यह TestGameTable के स्थान से संबंधित नहीं है। जावा फ़ाइल।
मैंने यहां एक और विस्तृत उत्तर दिया ... where is resource actually located

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