ClassLoader getResourceAsStream 返回 null

2024-03-07

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

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

In 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

Why?我是否放置了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");

搜索规则在javadoc 的ClassLoader#getResource(String) http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29javadoc 的Class#getResource(String) http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource%28java.lang.String%29.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ClassLoader getResourceAsStream 返回 null 的相关文章

随机推荐