NullPointer在Java中读取属性文件时的异常

2022-09-02 09:32:29

我正在使用以下代码来读取属性文件:

Properties pro = new Properties();
InputStream is = Thread.currentThread().getContextClassLoader().
    getResourceAsStream("resources.properties");

pro.load(is);

当我执行代码时,我收到以下错误:

Exception in thread "main" java.lang.NullPointerException
  at java.util.Properties$LineReader.readLine(Properties.java:418)
  at java.util.Properties.load0(Properties.java:337)
  at java.util.Properties.load(Properties.java:325)
  at com.ibm.rqm.integration.RQMUrlUtility.RQMRestClient.getResource(RQMRestClient.java:66)
  at com.ibm.rqm.integration.RQMUrlUtility.RQMRestClient.main(RQMRestClient.java:50)

为什么我会得到一个?我应该在哪里保存文件?NullPointerExceptionresources.properties


答案 1

它看起来像类加载器.getResourceAsStream(字符串名称)返回,然后导致抛出。nullProperties.loadNullPointerException

以下是文档摘录:

URL getResource(字符串名称):查找具有给定名称的资源。资源是类代码可以以独立于代码位置的方式访问的一些数据(图像、音频、文本等)。

资源的名称是标识资源的以 -分隔的路径名。'/'

返回:用于读取资源的对象,或者如果出现以下情况:URLnull

  • 找不到资源,或者
  • 调用程序没有足够的权限来获取资源。

另请参见


答案 2

如果您编写更多行,则错误修复更容易,例如:

Properties properties = new Properties();
Thread currentThread = Thread.currentThread();
ClassLoader contextClassLoader = currentThread.getContextClassLoader();
InputStream propertiesStream = contextClassLoader.getResourceAsStream("resource.properties");
if (propertiesStream != null) {
  properties.load(propertiesStream);
  // TODO close the stream
} else {
  // Properties file not found!
}

推荐