You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Eclipse Mars中EJB项目读取Config.properties报空指针异常求助

解决EJB项目中Properties文件读取的NullPointerException问题

我来帮你搞定这个空指针问题!首先得搞清楚为什么会出现这个错误:getClass().getResourceAsStream("/config.properties") 返回了null,因为JVM在类路径的根目录下找不到这个文件,调用prop.load(null)自然就抛出了NullPointerException。

问题根源

你的Config.properties文件放在Source Packages -> Resource文件夹下,在Eclipse中,Source Packages下的子文件夹会被编译到类路径的对应子目录中。也就是说,这个文件在类路径中的实际路径是/Resource/config.properties,而不是你写的/config.properties

解决方案

这里有几个可行的办法:

1. 修正文件路径

直接把代码里的路径改成文件在类路径中的实际位置:

prop = new Properties();
try {
    prop.load(this.getClass().getResourceAsStream("/Resource/config.properties"));
} catch (IOException e) {
    e.printStackTrace();
}

2. 确认Resource文件夹是源文件夹

有时候如果Resource文件夹没被标记为源文件夹,Eclipse不会把里面的文件复制到编译后的类路径中。你可以右键点击Resource文件夹,选择 Build Path -> Use as Source Folder,确保它被正确识别为源目录。

3. 使用上下文类加载器读取

另一种更灵活的方式是用线程上下文类加载器,这种方式不需要前面的斜杠,直接从类路径根开始找:

prop = new Properties();
try {
    prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("Resource/config.properties"));
} catch (IOException e) {
    e.printStackTrace();
}

额外检查

你可以去项目的编译输出目录(默认是bin或者target/classes)看看,确认Config.properties是不是在Resource子目录下,这样就能验证路径是否正确了。

内容的提问来源于stack exchange,提问作者LALIT TOMAR

火山引擎 最新活动