[英]Can't enumerate `class` files with ClassLoader#getResources()
我正在嘗試枚舉 package 中的類
Enumeration<URL> resourceUrls = myObject.getClassLoader().getResources("path/to/my/package/");
while (resourceUrls.hasMoreElements()) {
...
不幸的是,它什么也沒返回。 為什么?
假設路徑是正確的。 路徑不以斜線開頭,以斜線結尾。 path.to.my.package
package 下有幾個public classes
。
我從 Spring 獲取此代碼。
您不能像走文件路徑那樣走 class 路徑。 遍歷文件路徑是在文件系統上完成的,這不適用於 class 路徑。
雖然 java class 路徑條目的形成類似於文件路徑,並且通常是文件夾和文件(在文件系統上或在 JAR 存檔中),但不一定非要如此。 事實上,一個單一的 package 的類可能來自不同性質的不同位置:一個可能從本地 JAR 文件加載,而另一個可能從遠程 ZE6B391A8D2C4D4557035A23A8B6 加載。
如果資源在不同的 JAR 文件(或其他位置)中具有相同的名稱,則存在方法ClassLoader.getResources()
以提供對資源的所有“出現”的訪問。 例如,您可以使用
ClassLoader.getSystemClassLoader().getResources("META-INF/MANIFEST.MF");
訪問 class 路徑中每個 JAR 文件的清單文件。
嘗試
Enumeration<URL> urls = ClassLoader.getSystemClassLoader().getResources("path/to/my/package");
while (urls.hasMoreElements()) {
System.out.println(urls.nextElement());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.