2

我有一个带有文件的 Maven 项目src/main/resources/barcoding.properties。尝试使用以下代码获取 barcoding.properties 文件时,我不断使用以下代码获取空指针:

public class BarcodingProperties{
  private static Properties props = null;

  private static void getProperties() {
        System.out.println("we in getProperties");
        props = new Properties();
        InputStream in = BarcodingProperties.class.getClass().getClassLoader().getResourceAsStream("barcoding.properties"); <-- This line returns null pointer exception.
        System.out.println("in. = "+in.toString());
        try {
            props.load(in);
        } catch (IOException e) {
            System.out.println("unable to load properties");
            e.printStackTrace();
        }
    }
}

当我构建项目并查看 jar 文件时,barcoding.properties 就存在于项目根目录中。

为什么这会返回 null,我该如何解决?

4

2 回答 2

2

这似乎很奇怪:

BarcodingProperties.class.getClass()

BarcodingProperties.class 是 BarcodingProperties 类对象实例。如果您对此执行 getClass() ,它将返回 Class 类对象...

Ideone用 String.class摆弄

你想要的可能是:

InputStream in = BarcodingProperties.class.getClassLoader().getResourceAsStream("barcoding.properties");
于 2013-09-25T20:21:16.993 回答
2

您正在尝试使用类加载器Class来加载资源,而不是BarcodingProperties像这样:

BarcodingProperties.class.getClassLoader().getResourceAsStream("barcoding.properties");

Class类加载器为空,表示它是由引导类加载器加载的,请参阅Stock JDK 类和“空”类加载器?了解更多信息。

于 2013-09-25T20:21:21.107 回答