2013-09-26 12 views
24

मेरे (ग्रहण में) परियोजना निर्देशिका संरचना:classloader getResourceAsStream रिटर्न अशक्त

MyProject/ 
    src/  --> "source directory" on Eclipse's classpath/buildpath 
     com.me.myapp 
      Driver 
      myconfig.txt 

Driver में, मैं निम्नलिखित कोड है:

public class Driver { 
    public static void main(String[] args) { 
     InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt"); 
     if(is == null) 
      System.out.println("input stream is null"); 
     else 
      System.out.println("input stream is NOT null :-)"); 
    } 
} 

जब मैं इस चलाने मैं निम्नलिखित कंसोल आउटपुट प्राप्त:

input stream is null 

क्यों? मैं कोई गलत स्थान में myconfig.txt रखा है? मैं classloader एपीआई गलत तरीके से उपयोग कर रहा हूँ? कुछ और? अग्रिम में धन्यवाद!

उत्तर

38

यदि यह एक ही पैकेज में है

InputStream is = Driver.class.getResourceAsStream("myconfig.txt"); 

तरीके से उपयोग आप इसे

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("myconfig.txt"); 

यह classpath के रूट में फ़ाइल की तलाश में है। आप खोज javadoc of ClassLoader#getResource(String) और javadoc of Class#getResource(String) से वर्णन किया गया के लिए

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/me/myapp/myconfig.txt"); 

नियमों का उपयोग कर सकते हैं।

7

यदि आप मेवेन के साथ काम कर रहे हैं, तो के तहत निम्नलिखित पंक्तियां जोड़ें टैग। जब आप सर्वर पर webapp चल रहे हैं आपको यह त्रुटि प्राप्त लेकिन वहाँ सर्वर पर संसाधनों के लिए कोई संदर्भ है।

तो, अपने pom.xml में इस निम्नलिखित जोड़ सकते हैं और जादू देखें।

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <includes> 
      <include>fileName.txt</include> 
     </includes> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <includes> 
      <include>fileName.wsdl</include> 
     </includes> 
    </resource> 
</resources> 

मज़ा लें !!! !!!

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