Come posso utilizzare ClassLoader.getResources()
per trovare risorse ricorsivamente dal mio classpath?Come utilizzare ClassLoader.getResources() correttamente?
E.g.
trovare tutte le risorse nella "directory"
META-INF
: Immaginate qualcosa di similegetClass().getClassLoader().getResources("META-INF")
Purtroppo, questo non recupera solo
URL
esattamente questo "directory".tutte le risorse di nome
bla.xml
(recursivly)getClass().getClassLoader().getResources("bla.xml")
Ma questo restituisce un vuoto
Enumeration
.
E come una questione bonus: Come si fa ClassLoader.getResources()
differiscono da ClassLoader.getResource()
?
@Andrew, un sacco di quadri iterare per alcuni file basati su nomi o estensioni negli archivi per automatizzare alcuni processi, come trovare ActionBeans of Stripes oi file hbm.xml per la sospensione. – bestsss
Vedere http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar-file/ – Vadzim
Il motivo per cui si confonde è che getResources funziona su un caricatore di classe che può avere più JAR nel classpath. Quindi se hai più JAR con la stessa risorsa, ottieni tutto. Tuttavia NON è destinato a cercare all'interno delle directory. Con getResources ("META-INF") si ottengono tutte le directory META-INFO nel percorso di ricerca del CL e se il CL è un caricatore di classi di file jar singolo, al massimo si ottiene una voce. – eckes