Come posso scoprire risorse in un vaso Java con un nome jolly?
Domanda
Voglio scoprire tutti i file XML che il mio ClassLoader è a conoscenza dell'uso di un modello jolly. C'è un modo per farlo?
Soluzione
Richiede un po 'di trucco, ma ecco un post di blog . Prima devi capire gli URL dei barattoli, quindi aprire il barattolo e scansionarne il contenuto. Penso che scopriresti gli URL di tutti i barattoli cercando `/META-INF/MANIFEST.MF '. Le directory sarebbero un'altra cosa.
Altri suggerimenti
Un ApplicationContext
di primavera può farlo in modo banale:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationConext.xml");
Resource[] xmlResources = context.getResources("classpath:/**/*.xml");
Vedi ResourcePatternResolver # getResources o ApplicationContext .
List<URL> resources = CPScanner.scanResources(new PackageNameFilter("net.sf.corn.cps.sample"), new ResourceNameFilter("A*.xml"));
inserisci lo snippet nel tuo pom.xml
<dependency>
<groupId>net.sf.corn</groupId>
<artifactId>corn-cps</artifactId>
<version>1.0.1</version>
</dependency>
Un file JAR è solo un altro file ZIP, giusto?
Quindi suppongo che potresti iterare i file jar usando http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html
Sto pensando a qualcosa del tipo:
ZipSearcher searcher = nuovo ZipSearcher (nuovo ZipInputStream (nuovo FileInputStream (" my.jar ")));
Elenca xmlFilenames = searcher.search (new RegexFilenameFilter (" .xml $ "));
Saluti. Keith.
Beh, non proviene da Java, ma
jar -tvf jarname | grep xml $
ti mostrerà tutti gli XML nel vaso.