從多個 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);