碰到一个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)
Null ポインター例外。23 行目に空に初期化された変数、または初期化されていない変数があるかどうかを確認してください。
1.
2. または、Demo.class.getClassLoader().getResourceAsStream()
、リソース構成ファイルはプロジェクトの CLASSPATH パスに配置され、ファイル名はロード時に直接指定されます。クラスを使用してリソース構成ファイルをロードします。
リーリー
ヌル ポインター例外は、リソース ファイルを読み取る上記のステートメントがヌル ポインターを返すため、つまり、 がリソース ファイル (パス エラー) を正しく見つけられないために発生します。
被験者は
Demo.class.getResourceAsStream()
とThread.currentThread().getContextClassLoader().getResourceAsStream()
の位置決め経路を明確にすることが推奨されます。この種の問題が再び発生した場合でも、簡単に解決できます。次の 3 つのステートメントを出力してみます。3 番目のステートメントは
に似ています。 リーリーThread.currentThread().getContextClassLoader()
最初のステートメントは Demo クラスの絶対パスを取得し、2 番目と 3 番目のステートメントはプロジェクト CLASSPATH の絶対パスを取得します。リソースを読み取るために作成した 2 つのステートメントは、次のパス
项目CLASSPATH/project/db.properties
にあります。リソース ファイルがその場所にあるかどうかを確認してください。