從多個 JAR 載入同名資源
具有相同路徑和名稱的資源可能存在於類路徑上的多個 JAR 檔案中。常見情況是遵循慣例的資源或者是包裝規範的一部分。這些資源的例子是
- META-INF / MANIFEST.MF
- META-INF / beans.xml(CDI 規範)
- 包含實現提供程式的 ServiceLoader 屬性
要訪問不同 jar 中的所有這些資源,必須使用 ClassLoader,它有一個方法。使用 Collections 函式可以方便地將返回的 Enumeration
轉換為 List
。
Enumeration<URL> resEnum = MyClass.class.getClassLoader().getResources("META-INF/MANIFEST.MF");
ArrayList<URL> resources = Collections.list(resEnum);