Can I list the resources in a given package?
Question
Lets assume my classes are loaded from a compressed .war file or loaded elsewhere, how can I discover all the resources in a given package? Enumerating files will not really work, since this is a war file. Most likely this will involve using the current classloader?
Is there a library out there that does something like that? Googling revealed only some hacks with listing files.
Solution
No, you can't list resources in a package because the JVM simply doesn't know what resources are in what package. See this question.
OTHER TIPS
Yes. You can use ClassLoader.getResources("")
;
Or you could use ferret API:
https://www.ohloh.net/p/pureperfect-ferret
This API allows you to scan the class path as well as arbitrary archives and directories using the Visitor pattern.
The Spring Framework offers a class called PathMatchingResourcePatternResolver
. With this class you can give Ant style paths with wildcards and it will find the relevant resources for you (searching through the folders and jars on the classpath).
I do this:
- before packaging, ls myResources/*.ext > myResources/list.txt
- then just read the file first