2013-09-26 33 views
24

Projem dizin yapısını döndürenClassLoader getResourceAsStream (Eclipse) boş

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 :-)"); 
    } 
} 

bu çalıştırdığınızda aşağıdaki konsol çıktısını almak:

input stream is null 

Neden?myconfig.txt yanlış bir yere yerleştirdim mi? ClassLoader API'yi yanlış mı kullanıyorum? Başka bir şey? Şimdiden teşekkürler! Aynı pakette ise

cevap

38

bunu

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

Bu sınıf yolunda kök dosyası arıyor olması

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

şekilde kullanabilirsiniz. Sen javadoc of ClassLoader#getResource(String) ve javadoc of Class#getResource(String) açıklanmıştır arama için

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

kurallarını kullanabilirsiniz.

7

Maven ile çalışıyorsanız, aşağıdaki satırları BUILD etiketine ekleyin. Web sunucusunda web sunucusunu çalıştırırken bu hatayı alıyorsunuz, ancak sunucudaki kaynaklara referans yok.

Bunu POM.xml dosyanıza ekleyin ve sihri görün.

<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> 

Have Fun. !!!