你所不知道的getResource()在maven下的黑洞!
原創(chuàng)不易,轉(zhuǎn)載請標(biāo)明地址,或者直接附上我的博客首頁https://georgedage.blog.csdn.net/?,當(dāng)然最好私信一下,謝謝。
getResource接受一個字符串參數(shù),如果以”/”開頭,就在classpath根目錄下找(不會遞歸查找子目錄),如果不以”/”開頭,就在調(diào)用getResource的字節(jié)碼對象所在目錄下找(同樣不會遞歸查找子目錄)。
光說不練,不行滴。上代碼:
非maven結(jié)構(gòu)
package com.jd.search;public class Test {public static void main(String[] args) {System.out.println(Test.class.getResource(""));System.out.println(Test.class.getResource("/"));System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");System.out.println(Test.class.getResource("george.class"));System.out.println(Test.class.getResource("/george.class"));System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");System.out.println(Test.class.getResource("dictionary.txt"));System.out.println(Test.class.getResource("/dictionary.txt"));System.out.println("**********************************");System.out.println(Test.class.getResourceAsStream("/"));System.out.println(Test.class.getResourceAsStream("/dictionary.txt"));} }結(jié)果展示:
【友情提醒】
這里做出建議,如果你不太好記住這個規(guī)則,就在進(jìn)行加載路徑時,進(jìn)行一次輸出,或者提前進(jìn)行一個類似的小demo測試。免得¥,你懂得!!!
當(dāng)然,本篇博客重點不是說這個,這個大家都懂,說的是,getResource()在maven下的黑洞!
期初用maven建了這個項目,就是去手寫一個分詞器。
然后呢?發(fā)現(xiàn)怎么搞都是空指針,空指針一個常見,也比較好解決的問題,然后我就進(jìn)行了測試,最終發(fā)現(xiàn)了這個問題,寫出來,以防各位,日后掉坑。
Maven結(jié)構(gòu)
代碼:
package com.jd.search;public class Test {public static void main(String[] args) {System.out.println(Test.class.getResource(""));System.out.println(Test.class.getResource("/"));System.out.println(Test.class.getResource("george.class"));System.out.println(Test.class.getResource("/george.class"));System.out.println(Test.class.getResource("dictionary.txt"));System.out.println(Test.class.getResource("/dictionary.txt"));System.out.println(Test.class.getResourceAsStream("/"));System.out.println(Test.class.getResourceAsStream("/dictionary.txt"));} }結(jié)果展示:
有心的可以將兩次記過進(jìn)行對比,或者自己敲一下demo。
這里為了方便大家。請看:上面的是非maven結(jié)構(gòu),下面的是maven結(jié)構(gòu):
?為什么會出現(xiàn)這樣的問題?
我將其歸結(jié)為maven項目的運行機(jī)制導(dǎo)致的。這一點相信你仔細(xì)觀察路徑后也能發(fā)現(xiàn)。
還不是很了解的,或者有比較好的了解的,歡迎留言!
總結(jié)
以上是生活随笔為你收集整理的你所不知道的getResource()在maven下的黑洞!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索引擎——反向索引原理揭秘及手写ik分
- 下一篇: 这怕是我看过的最好的关于 “ 拜占庭将军