getClassLoader()。getResourceAsStream(“../ resources / config.properties”)返回null

时间:2013-02-16 17:32:49

标签: java

大家好我收到了错误

Caused by: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at richard.fileupload.FileUploadController.loadProp(FileUploadController.java:48)
    ... 60 more

每当调用我的属性类时,这就是代码

 private Properties configProp = new Properties();

    @PostConstruct
    public void loadProp() {
        System.out.println("Loading properties");
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties");
        try {
            configProp.load(in);
            System.out.println(configProp.getProperty("destinationPDF"));
            System.out.println(configProp.getProperty("destination"));
            System.out.println(configProp.getProperty("fileList"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private String destinationPDF = configProp.getProperty("destinationPDF");
    public String destination = configProp.getProperty("destination");
    private String username;

错误似乎来自这一行:

InputStream in = this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties");
        try {
            configProp.load(in);

导致此错误的原因是什么?如何解决?

上面的代码,应该指向属性文件,然后从中检索三个变量值,它没有达到

System.out.println(configProp.getProperty("destinationPDF"));
System.out.println(configProp.getProperty("destination"));
System.out.println(configProp.getProperty("fileList

在我收到错误之前

这是我的目录结构

enter image description here

如您所见,属性文件位于resources /中,我将如何获得此

的链接

编辑:

好的,所以它与文件的完整链接完全正常:

configProp.load(new FileInputStream("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/WEB-INF/config.properties"));

但无论我把文件放在projet中我根本无法加载它,为什么会这样?

1 个答案:

答案 0 :(得分:3)

这条线没有意义:

this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties")

ClassLoader.getResourceAsStream()使用从根包开始的包路径从类路径加载资源。根包装上面没有任何东西。