首页 > 解决方案 > 即使在 Java 中加载属性文件后,getProperty 也会返回 null

问题描述

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

@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

标签: javadynamic-class-loaders

解决方案


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

System.getProperty

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

prop.getProperty("test")

推荐阅读