Java的InputStream in = Object.class.getResourceAsStream()返回Null

程序运行报错thread "main" java.lang.ExceptionInInitializerError原因是inStream parameter is null,我看了一下在加载properties文件时,prop.load(in)是加载了一个空指针。程序在linux服务器是可以运行的,但在本地windows IDE下为什么会出这种情况,是路径问题吗?我尝试改了绝对路径也是相同的错误,getResourceAsSteam()后面的路径究竟怎么个格式,看了很多答案,都没尝试成功,比如改成class.getclass().getResourceAsSteam()依旧是返回Null。下图是我的目录

clipboard.png

我加载时的代码:

clipboard.png

阅读 9.9k
8 个回答

SomeType.class.getResourceAsStream() 这个等价于 SomeType 被哪个ClassLoader加载,并且调用 ClassLoader.getResourceAsStream() 方法。

楼主代码中的Object.class 是被 Bootstrap ClassLoader,自然读不到

类名.class.getClassLoader().getResourceAsStream("文件名");

你把你部署后的ApplicationResources.properties文件的路径截图一下呢,
确保该文件是在class路径下就可以使用:this.class.getClassLoader().getResourceAsStream("ApplicationResources.properties");

InputStream input = this.getClass.getResourceAsStream("ApplicationResources.properites");

这样就可以了

试试这个

Thread.currentThread().getContextClassLoader().getResourceAsStream("ApplicationResources.properites");
InputStream in = 当前类名.class.getResourceAsStream("/ApplicationResources.properties");

把你的文件/ApplicationResources.properties放在java/src的目录下面

请给出你的绝对路径

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题