検索

ホームページ  >  に質問  >  本文

java - 读取.properties配置文件 空指针异常

碰到一个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)
PHPzPHPz2770日前1086

全員に返信(3)返信します

  • 高洛峰

    高洛峰2017-04-18 09:18:43

    Null ポインター例外。23 行目に空に初期化された変数、または初期化されていない変数があるかどうかを確認してください。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:43

    1. Demo.class.getClassLoader().getResourceAsStream()、リソース構成ファイルはプロジェクトの CLASSPATH パスに配置され、ファイル名はロード時に直接指定されます。

    2. または、

    クラスを使用してリソース構成ファイルをロードします。

    返事
    0
  • 巴扎黑

    巴扎黑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 にあります。リソース ファイルがその場所にあるかどうかを確認してください。

    返事
    0
  • キャンセル返事