cari

Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu1084

membalas semua(3)saya akan balas

  • 高洛峰

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

    Pengecualian penuding nol, semak sama ada terdapat pembolehubah yang dimulakan kepada kosong atau tidak dimulakan dalam baris 23!

    balas
    0
  • PHP中文网

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

    1. Demo.class.getClassLoader().getResourceAsStream(), fail konfigurasi sumber diletakkan dalam laluan CLASSPATH projek, dan nama fail diberikan terus semasa memuatkan

    2. Atau gunakan kelas java.util.ResourceBundle untuk memuatkan fail konfigurasi sumber;

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:18:43

    Demo.class.getResourceAsStream("/project/db.properties")
    Thread.currentThread().getContextClassLoader().getResourceAsStream("project/db.properties")

    Pengecualian penuding nol berlaku kerana pernyataan di atas untuk membaca fail sumber mengembalikan penuding nol, iaitu tidak mengesan fail sumber dengan betul (ralat laluan) .

    Adalah disyorkan agar subjek menjelaskan laluan kedudukan Demo.class.getResourceAsStream() dan Thread.currentThread().getContextClassLoader().getResourceAsStream(). Jika anda menghadapi masalah seperti ini lagi, ia akan diselesaikan dengan mudah.

    Cuba keluarkan tiga pernyataan berikut, pernyataan ketiga adalah serupa dengan Thread.currentThread().getContextClassLoader()

    Demo.class.getResource("").getPath()
    Demo.class.getResource("/").getPath()
    Demo.class.getClassLoader().getResource("").getPath();

    Pernyataan pertama mendapat laluan mutlak kelas Demo, dan pernyataan kedua dan ketiga mendapat laluan mutlak projek CLASSPATH. Dua pernyataan yang anda tulis untuk membaca sumber terletak di laluan berikut 项目CLASSPATH/project/db.properties Semak untuk melihat sama ada fail sumber anda berada di tempat itu.

    balas
    0
  • Batalbalas