Pregunta

Quiero descubrir todos los archivos xml que mi ClassLoader conoce utilizando un patrón comodín. ¿Hay alguna manera de hacer esto?

¿Fue útil?

Solución

Requiere un pequeño truco, pero aquí hay un entrada del blog . Primero averigua las URL de los frascos, luego abre el frasco y escanea su contenido. Creo que descubrirías las URL de todos los archivos jar buscando "/META-INF/MANIFEST.MF". Los directorios serían otro asunto.

Otros consejos

Un Spring ApplicationContext puede hacer esto trivialmente:

 ApplicationContext context = new ClassPathXmlApplicationContext("applicationConext.xml");
 Resource[] xmlResources = context.getResources("classpath:/**/*.xml");

Consulte ResourcePatternResolver # getResources , o ApplicationContext .

 List<URL> resources = CPScanner.scanResources(new PackageNameFilter("net.sf.corn.cps.sample"), new ResourceNameFilter("A*.xml"));

ponga el fragmento en su pom.xml

<dependency>
    <groupId>net.sf.corn</groupId>
    <artifactId>corn-cps</artifactId>
    <version>1.0.1</version>
</dependency>

Un archivo JAR es solo otro archivo ZIP, ¿verdad?

Supongo que puedes iterar los archivos jar utilizando http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html

Estoy pensando en algo como:

ZipSearcher buscador = nuevo ZipSearcher (nuevo ZipInputStream (nuevo FileInputStream (" my.jar "))); List xmlFilenames = searcher.search (nuevo RegexFilenameFilter (" .xml $ "));

Saludos. Keith.

Bueno, no es desde Java, sino

jar -tvf jarname | grep xml $

le mostrará todos los XML en el jar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top