If there are two JAR files in the classpath, both containing a resource named \"config.properties\" in its root. Is there a way to retrieve both files similar to
You need ClassLoader.getResources(name)
(or the static version ClassLoader.getSystemResources(name)).
But unfortunately there's a known issue with resources that are not inside a "directory". E.g. foo/bar.txt
is fine, but bar.txt
can be a problem. This is described well in the Spring Reference, although it is by no means a Spring-specific problem.
Update:
Here's a helper method that returns a list of InputStreams:
public static List loadResources(
final String name, final ClassLoader classLoader) throws IOException {
final List list = new ArrayList();
final Enumeration systemResources =
(classLoader == null ? ClassLoader.getSystemClassLoader() : classLoader)
.getResources(name);
while (systemResources.hasMoreElements()) {
list.add(systemResources.nextElement().openStream());
}
return list;
}
Usage:
List resources = loadResources("config.properties", classLoader);
// or:
List resources = loadResources("config.properties", null);