2008-10-09 10 views
17

Supongamos que mis clases se cargan desde un archivo comprimido .war o se cargan en otro lugar, ¿cómo puedo descubrir todos los recursos en un paquete dado? La enumeración de archivos no funcionará realmente, ya que este es un archivo war. Lo más probable es que esto implique el uso del cargador de clases actual?¿Puedo enumerar los recursos en un paquete dado?

¿Hay una biblioteca por ahí que haga algo como eso? Google simplemente reveló algunos hacks con los archivos de la lista.

Respuesta

5

No, no puede enumerar recursos en un paquete porque la JVM simplemente no sabe qué recursos están en qué paquete. Ver this question.

6

The Spring Framework ofrece una clase llamada PathMatchingResourcePatternResolver. Con esta clase, puede asignar rutas de estilo Ant con comodines y encontrará los recursos relevantes para usted (buscando a través de las carpetas y jar en classpath).

21

Sí. Puede usar ClassLoader.getResources("");

O puede utilizar la API de hurón:
https://www.ohloh.net/p/pureperfect-ferret

Esta API permite escanear la ruta de clase así como los archivos y directorios arbitrarios utilizando el patrón del visitante.

+0

1 solución correcta, debería funcionar para cualquier cargador de clases y en los contenedores web –

+0

Creo 'ClassLoader.getResources ("") 'realmente no funciona para jarras. Consulte los comentarios sobre [esta pregunta] (http://stackoverflow.com/questions/21836950/urlclassloader-getresources-empty-resource-name-not-giving-roots-of-jars). También Spring 'PathMatchingResourcePatternResolver' menciona en [su documentación] (http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html) los trucos implementaron para encontrar recursos de un JAR (ver la sección "Implicaciones sobre la portabilidad"). – pazabo

+0

sí funciona para frascos. Funciona para cualquier entorno. – jcfolsom

3

hago esto: - antes de su envasado, ls myResources/*.ext > myResources/list.txt - entonces sólo leer el archivo primero

Cuestiones relacionadas