xxx.class.getClassLoader().getResource("xxx").getPath()這句話報錯空指標
阿新 • • 發佈:2018-11-01
今天跟著網上的教程自己寫了一個簡易的spring的IOC仿寫程式,然後解析xml檔案都是自己寫的,在執行的時候去獲取.xml的路徑的時候呼叫了xxx.class.getClassLoader().getResource("xxx").getPath()這個方法去獲取,然後報錯空指標,debug以後發現getResource()這拿不到,再往深找
public boolean mayContain(String var1) { if (this.isClassOnlyJar && !var1.endsWith(".class")) { return false; } else { String[] var2 = this.contents; for(int var3 = 0; var3 < var2.length; ++var3) { if (var1.startsWith(var2[var3])) { return true; } } return false; } }
找到jdk1.8.0_111\jre\lib\rt.jar!\sun\misc\MetaIndex.class這個類裡面發現他通過getClassLoader()找路徑是在src包下直接找,其他內部的檔案可能自動忽略還是怎麼,總之找不到 ,最後把自己寫的.xml放在src下後,可以找到並解析。
最後總結一下,就是.xml 配置檔案最好放到src根目錄下,這樣用getClassLoader().getResource("xxx").getPath()去找才能找到。