即使在Java中加载属性文件后,getProperty也返回null

时间:2018-06-06 11:05:05

标签: java dynamic-class-loaders

以下代码有什么问题。一切似乎都是正确的,执行时没有例外。我已经双重验证了config.properties文件中的test属性值。

@BeforeClass
public void propertyLoading() {
    System.out.println("in beforeclass");

    prop = new Properties();
    ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    try {
        System.out.println("path : "+classLoader.getResource("config.properties").getFile().toString());
        input = new FileInputStream(new File(classLoader.getResource("config.properties").getFile()));
        prop.load(input);
    } 
    catch (Exception e) {
        e.printStackTrace();
    }

    try {
        if (input != null)
            input.close();
    }
    catch (IOException e) {
        e.printStackTrace();
    }

    System.out.println("test       : "+System.getProperty("test"));
}

下面的config.properties文件内容;

test=aaaa

2 个答案:

答案 0 :(得分:3)

因为您使用的是系统属性,所以这与您尝试使用的运行时属性不同

System.getProperty

虽然你应该调用你在上面创建几行的Properties对象

prop.getProperty("test")

答案 1 :(得分:1)

如果要从System.getProperty()调用

中读取属性
System.setProperties(prop);

从文件

中读取属性后

(在场外,尽可能使用资源尝试https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html