tutorial interfaz grafica español ejemplos contenedores java classpath

interfaz - ¿Cómo puedo descubrir los recursos en un contenedor Java con un nombre de comodín?



swing controls (5)

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


Requiere un pequeño truco, pero aquí hay una entrada de blog relevante. Primero averigua las URL de los jar, luego abre el jar y escanea sus contenidos. Creo que descubrirá las URL de todos los archivos jar buscando `/META-INF/MANIFEST.MF ''. Los directorios serían otra cosa.


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

Así que supongo que podría iterar los archivos jar utilizando http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html

Estoy pensando algo así como:

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

Aclamaciones. Keith.


Un Spring ApplicationContext puede hacer esto trivialmente:

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

Ver ResourcePatternResolver # getResources , o ApplicationContext .


Bueno, no es desde dentro de Java, sino

jar -tvf jarname | grep xml$

le mostrará todos los XML en el contenedor.


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

pon el fragmento en tu pom.xml

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