在同一个包中查找属性文件时,class.getResourceAsStream返回null

时间:2012-12-10 17:09:47

标签: java netbeans properties path

我有一个使用class.getResourceAsStream(props.properties)加载其属性文件的类。属性文件与类本身位于同一个包中,但它现在返回null而不是对象。我很疲惫,因为这在原始计算机上运行良好,但在另一台计算机上运行失败。我将整个目录结构从旧的复制到新的。我在两台计算机上都使用Netbeans 7.2.1。我确定它必须是类路径设置或SOMETHING但我无法发现这两种环境之间的任何差异。以下是示例代码:

package Cab;
import java.util.*;
import java.lang.reflect.*;
import java.io.*;

public class CabTest{

    public static void main(String[] args)
    {
        Properties  l_Prop = new Properties();
        InputStream l_IS;
        try
        {
           l_IS = CabTest.class.getResourceAsStream("props.properties");
           l_Prop.load(l_IS);
        }
        catch(IOException l_Exc)
        {
            System.out.println(l_Exc);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

这真的适用于一个环境而不是另一个环境吗?从那以后它看起来不正确

l_IS = Class.class.getResourceAsStream("props.properties");

不会解析为与您的特定类相关的流。尝试:

l_IS = CabTest.class.getResourceAsStream("props.properties");

答案 1 :(得分:0)

这表示如果.class文件位于包“foo.bar.baz.props.properties”中,那么这就是你应该给类加载器的路径:

l_IS = this.getClass().getResourceAsStream("foo/bar/baz/props.properties");

只有当它位于CLASSPATH的根目录时,你的方式才有效。