1. 程式人生 > >xxx.class.getClassLoader().getResource("xxx").getPath()這句話報錯空指標

xxx.class.getClassLoader().getResource("xxx").getPath()這句話報錯空指標

今天跟著網上的教程自己寫了一個簡易的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()去找才能找到。