¿Cómo puedo usar ClassLoader.getResources()
para encontrar recursos recursivos de mi classpath?Cómo usar ClassLoader.getResources() correctamente?
E.g.
encontrar todos los recursos del "directorio"
META-INF
: imaginar algo comogetClass().getClassLoader().getResources("META-INF")
Por desgracia, esto no solamente recuperar un
URL
a exactamente este "directorio".todos los recursos con nombre
bla.xml
(recursivamente)getClass().getClassLoader().getResources("bla.xml")
Pero esto devuelve un vacío
Enumeration
.
Y como una pregunta extra: ¿Cómo se diferencian de ClassLoader.getResources()
ClassLoader.getResource()
?
@ Andrew, una gran cantidad de marcos para iterar algunos archivos basados en nombre o extensiones en los archivos para automatizar algunos procesos, como encontrar los ActionBeans de Stripes o los archivos hbm.xml para hibernar. – bestsss
Ver http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar-file/ – Vadzim
El motivo por el que te confunde es que getResources funciona en un cargador de clases que puede tener varios JAR en el classpath. Entonces, si tienes varios JAR con el mismo recurso, obtienes todo. Sin embargo, NO está destinado a buscar dentro de directorios. Con getResources ("META-INF") obtienes todos los directorios META-INFO en la ruta de búsqueda de la CL y si CL es un solo cargador de clases de archivos jar, a lo sumo obtienes una entrada. – eckes