Rumah > Soal Jawab > teks badan
碰到一个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)
高洛峰2017-04-18 09:18:43
Pengecualian penuding nol, semak sama ada terdapat pembolehubah yang dimulakan kepada kosong atau tidak dimulakan dalam baris 23!
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;
巴扎黑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.