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
玩的开心。!!!