2016年11月7日 星期一

Class ClassLoader 的路徑問題

假設專案名稱是ProjectName
ProjectName主要要src和bin兩個資料夾
src放的是.java檔;bin放的是.class
當在src下增加.java和資料夾時,bin也會增加,但.java會變成.class
src下有個資料夾叫subPackage(bin當然也有)
以下程式碼是放在subPackage下執行的

※測試程式

System.out.println("a=" + TestJunit.class.getResource(""));//~ProjectName/bin/subPackage/
    
System.out.println("b=" + TestJunit.class.getResource("/"));//~ProjectName/bin/
    
System.out.println("c=" + TestJunit.class.getClassLoader().getResource(""));//~ProjectName/bin/

※class.getResource裡面的路徑可以分成用「/」和沒「/」開頭
「/」開頭的是src下的路徑(也是bin下的路徑);沒有「/」開頭的是目前路徑

※getClassLoader().getResource不能用「/」開頭,永遠都是null

※class.getResource("/")和getClassLoader().getResource("")是一樣的

※有兩個常用的方法getResource和getResourceAsStream,路徑取法都一樣
但getResource取不到是null;getResourceAsStream取不到會跳Exception

沒有留言:

張貼留言