Pergunta

Eu quero descobrir todos os arquivos XML que meu ClassLoader está ciente do uso de um padrão de curinga. Existe alguma maneira de fazer isso?

Foi útil?

Solução

Ela exige um pouco de artifícios, mas aqui está um relevante blog . Você primeiro descobrir as URLs dos frascos, em seguida, abrir o frasco e digitalizar seu conteúdo. Eu acho que você iria descobrir as URLs de todos os frascos, procurando por `/META-INF/MANIFEST.MF'. Diretórios seria outra questão.

Outras dicas

A Primavera ApplicationContext pode fazer isso trivialmente:

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

Veja ResourcePatternResolver # getResources , ou ApplicationContext .

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

colocar o trecho em seu pom.xml

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

Um arquivo JAR é apenas mais um arquivo ZIP, certo?

Então, eu suponho que você poderia interagir os arquivos jar usando http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html

Estou pensando em algo como:

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

Saúde. Keith.

Bem, não é de dentro Java, mas

jar -tvf jarname | grep xml$

irá mostrar-lhe todos os XMLs na jarra.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top