碰到一个properties的资源文件,读取报空指针,什么原因?
我使用下面2中方式读取,都是空指针。
Properties pro
= new Properties();
pro.load(Demo.class.getResourceAsStream("/project/db.properties"));
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("project/db.properties"));
Exception:
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at project.HashMap.Demo.main(Demo.java:23)
PHP中文网2017-04-18 09:18:43
1. Demo.class.getClassLoader().getResourceAsStream()
、リソース構成ファイルはプロジェクトの CLASSPATH パスに配置され、ファイル名はロード時に直接指定されます。
クラスを使用してリソース構成ファイルをロードします。
巴扎黑2017-04-18 09:18:43
リーリー
ヌル ポインター例外は、リソース ファイルを読み取る上記のステートメントがヌル ポインターを返すため、つまり、 がリソース ファイル (パス エラー) を正しく見つけられないために発生します。
被験者はDemo.class.getResourceAsStream()
とThread.currentThread().getContextClassLoader().getResourceAsStream()
の位置決め経路を明確にすることが推奨されます。この種の問題が再び発生した場合でも、簡単に解決できます。
次の 3 つのステートメントを出力してみます。3 番目のステートメントは Thread.currentThread().getContextClassLoader()
最初のステートメントは Demo クラスの絶対パスを取得し、2 番目と 3 番目のステートメントはプロジェクト CLASSPATH の絶対パスを取得します。リソースを読み取るために作成した 2 つのステートメントは、次のパス 项目CLASSPATH/project/db.properties
にあります。リソース ファイルがその場所にあるかどうかを確認してください。