2010-11-22 57 views
1

我作爲一個URLClassLoader的默認孩子做,加了我所有jar文件由的Java的URLClassLoader:findResources返回null,但loadClass的返回班

public void addFile(String path) throws MalformedURLException { 
    String urlPath = "jar:file:/" + path + "!/"; 

    System.out.println("------------------"); 
    System.out.println("urlPath = " + urlPath); 

    URL url = new URL(urlPath); 
    System.out.println("url = " + url); 
    super.addURL(url); 
    System.out.println("g = " + getURLs().length); 
    System.out.println("=================="); 


} 

然後我試圖從裝載機得到一些類:

System.out.println("cl.loadClass() = " + cl.loadClass("com.company.project.SomeClass")); 

它正常返回類。

,當我試圖通過包裝,拿出所有的類:

resources = cl.findResources("com/company/"); 

它返回空枚舉。 爲什麼?

回答

0

我不認爲findResources()做什麼,你認爲它shuld做。據its API doc

返回表示所有的資源上 具有 指定名稱的URL搜索路徑中的URL 枚舉。

這聽起來不像它會做一個前綴匹配(如果你考慮它,這是不可能的,給定一個HTTP URL)。它可能做的是查找給定的全名URLClassLoader已構建的所有基本URL中,因此如果您調用findResources("log4j.properties")並且已使用5個JAR構建類加載器,其中3個包含文件log4j.properties那麼該方法將返回全部3.

+0

findResources()用於通過springframework scanner查找所有包含的信息。有我的字符串正確的方法。 – Ramil 2010-11-22 09:15:38