ClassLoader getResourceAsStream返回null

我的项目目录结构(在Eclipse中):

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 API? 别的什么? 提前致谢!

如果它在同一个包中使用

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

你拥有它的方式

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

它正在类路径的根目录中查找文件。 你可以用

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

ClassLoader#getResource(String)的javadoc和Class#getResource(String)的javadoc中解释了搜索规则。

如果您正在使用Maven,请在BUILD标记下添加以下行。 在服务器上运行webapp时出现此错误,但没有引用服务器上的资源。

因此,将以下内容添加到您的POM.xml中并查看魔术。

   src/main/resources true  fileName.txt    src/main/resources true  fileName.wsdl    

玩的开心。!!!