我有一个使用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);
}
}
}
答案 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的根目录时,你的方式才有效。