classloader.getSystemResourceAsStream返回null

时间:2009-04-20 21:11:49

标签: java properties classloader

我正在尝试加载属性文件而不使用文件的实际路径。我已经使用以下方法在其他一些简单的应用程序上完成了这些:

InputStream inputStream = ClassLoader.getSystemResourceAsStream(PROPERTIES_FILE);
props.load(inputStream);

但这次它不起作用。由于某种原因,inputStream为null。 PROPERTIES_FILE是一个定义为“app.properties”的常量。我试图删除.properties扩展并获得相同的结果。

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:13)

PROPERTIES_FILE常量应该包括包和属性文件(例如“com / some / library / file.properties”。

    final static String PROPS_FILE = "/com/some/library/file.props";
                     //The preceding  "/" is dependendant on wheterh 
                     //you are going to be giving a relative or absolute location
    InputStream is = YourCurrentClass.class.getResourceAsStream(PROPS_FILE);

答案 1 :(得分:0)

getSystemResourceAsStream返回null时,表示找不到资源。确保请求的资源确实位于指定位置的类路径上。

答案 2 :(得分:0)

遇到了同样的问题。

原因:我将DAO包重命名为dao。展开artifact时,目录DAO不会被覆盖。

所以我在项目内部获得了dao,在文件系统:facepalm中得到了DAO