碰到一个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)
Pengecualian penuding nol, semak sama ada terdapat pembolehubah yang dimulakan kepada kosong atau tidak dimulakan dalam baris 23!
1.
Demo.class.getClassLoader().getResourceAsStream()
, fail konfigurasi sumber diletakkan dalam laluan CLASSPATH projek, dan nama fail diberikan terus semasa memuatkan2. Atau gunakan kelas
java.util.ResourceBundle
untuk memuatkan fail konfigurasi sumber;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()
danThread.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()
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.