1

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

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);
        }
    }
}
4

2 回答 2

2

这真的适用于一个环境而不是另一个环境吗?它看起来不正确,因为这

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

无法解析为与您的特定课程相关的流。尝试:

l_IS = CabTest.class.getResourceAsStream("props.properties");
于 2012-12-10T17:11:29.880 回答
0

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

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

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

于 2012-12-10T17:15:33.683 回答