鍍金池/ 問答/Java  Python  Linux/ Java的InputStream in = Object.class.getRe

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

回答
編輯回答
互擼娃

SomeType.class.getResourceAsStream() 這個等價于 SomeType 被哪個ClassLoader加載,并且調用 ClassLoader.getResourceAsStream() 方法。

樓主代碼中的Object.class 是被 Bootstrap ClassLoader,自然讀不到

2017年12月13日 01:48
編輯回答
忘了我

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

2018年2月18日 02:04
編輯回答
墻頭草

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

2017年8月17日 13:02
編輯回答
做不到

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

2018年7月26日 11:02
編輯回答
陪她鬧

試試這個

Thread.currentThread().getContextClassLoader().getResourceAsStream("ApplicationResources.properites");
2017年10月18日 17:03
編輯回答
生性

請給出你的絕對路徑

2018年9月19日 15:43
編輯回答
澐染
InputStream in = 當前類名.class.getResourceAsStream("/ApplicationResources.properties");
2017年10月4日 02:22
編輯回答
葬愛
InputStream input = this.getClass.getResourceAsStream("ApplicationResources.properites");

這樣就可以了

2017年7月29日 22:30