Java 无法使用Singleton类使用IntelliJ IDEA中属性文件的访问属性

Java 无法使用Singleton类使用IntelliJ IDEA中属性文件的访问属性,java,intellij-idea,properties,singleton,Java,Intellij Idea,Properties,Singleton,我正在练习使用名为PropertyLoader的单例类从属性文件访问属性,但是我的maven项目无法在参考资料中找到该文件,并给出空指针例外 这是类代码 import java.io.IOException; 导入java.util.Properties; 导入org.apache.log4j.Logger; 公共类PropertyLoader{ 私有静态PropertyLoader实例=null; 私人物业;; 私有最终静态记录器Logger=Logger.getLogger(Property

我正在练习使用名为PropertyLoader的单例类从属性文件访问属性,但是我的maven项目无法在参考资料中找到该文件,并给出空指针例外

这是类代码

import java.io.IOException;
导入java.util.Properties;
导入org.apache.log4j.Logger;
公共类PropertyLoader{
私有静态PropertyLoader实例=null;
私人物业;;
私有最终静态记录器Logger=Logger.getLogger(PropertyLoader.class.getName());
受保护的PropertyLoader()引发IOException{
//TODO:修复加载以下属性文件的问题
属性=新属性();
load(PropertyLoader.class.getResourceAsStream(“app.properties”);
}
公共静态属性Loader getInstance(){
if(实例==null){
试一试{
实例=新的PropertyLoader();
}捕获(ioe异常ioe){
error(“创建属性加载器实例时出错:”+ioe.getMessage());
}
}
返回实例;
}
公共字符串getValue(字符串键){
LOGGER.info(“获取:“+键”的属性值);
返回properties.getProperty(键);
}
}
我得到的错误是:

线程“main”java.lang.NullPointerException中的异常:inStream 参数在处为空 java.base/java.util.Objects.requirennull(Objects.java:247)位于 java.base/java.util.Properties.load(Properties.java:404)位于 在.net.sudhir.evernote.client.batchjob.PropertyLoader中。(PropertyLoader.java:16) 在 在.net.sudhir.evernote.client.batchjob.PropertyLoader.getInstance(PropertyLoader.java:23)中 在 在.net.sudhir.evernote.client.batchjob.EvernoteClient中。(EvernoteClient.java:51) 在 在.net.sudhir.evernote.client.batchjob.BatchProcess.main(BatchProcess.java:33)中

以下是项目结构的屏幕截图


注意:在构造函数中进行计算是不好的做法。最好创建一些加载资源文件的方法。

谢谢,但您能解释一下我的代码和您的代码之间的区别吗?这两个似乎是一样的,是因为我在构造函数中使用了它吗?
PropertyLoader.class.getClassLoader()
明白了谢谢
properties = new Properties();

try(InputStream inputStream = PropertyLoader.class.getClassLoader().getResourceAsStream("app.properties")) {
    if(inputStream == null)
        throw new FileNotFoundException("File not found in classpath");

    properties.load(inputStream);
}