2011-06-09 21 views

回答

31

有幾種方法來加載資源,每一個稍有不同的含義所在的 資源。這使用用於啓動程序的類路徑。如果你在一個像tomcat這樣的web容器中,這不會從你的WAR文件中獲取資源。

Class<T>#getResource()預置一類的包名稱資源的名稱,然後委託給它的類加載器。如果您的資源存儲在映射類的包層次結構中,請使用此方法。

ClassLoader#getResource()委託給它的父類加載器。這將最終搜索到系統類加載器的資源。

如果您感到困惑,只需堅持ClassLoader#getResource()

0

ClassLoader.getSystemResource()將使用bootstrap(系統)類加載器。

Class.getResource()將使用該特定實例的Class的類加載器,換言之,無論使用哪個類加載器來加載該類。這可能是與系統類加載器不同的類加載器。

3

Class.getResource()

此方法委託調用其 類加載器,從而使這些 更改資源名稱後:如果 資源名稱以「/」開頭,這是 不變;否則,在轉換「。」之後,軟件包名稱 被預置爲資源名稱 。至 」/」。如果這個 對象由引導程序 加載程序加載,則該調用將委託給 ClassLoader.getSystemResource

ClassLoader.getSystemResource()

從用來加載 類的搜索路徑指定名稱 的資源。

ClassLoader::getSystemResource()使用系統類加載器 - 此方法通過系統類加載器

相關問題