Comment puis-je découvrir des ressources dans un fichier jar Java avec un nom générique?

StackOverflow https://stackoverflow.com/questions/133229

  •  02-07-2019
  •  | 
  •  

Question

Je souhaite découvrir tous les fichiers xml connus de mon chargeur de classe en utilisant un modèle générique. Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Cela nécessite quelques astuces, mais voici un exemple pertinent entrée de blog . Vous devez d’abord comprendre les URL des fichiers jar, puis ouvrir le fichier jar et en analyser le contenu. Je pense que vous découvrirez les URL de tous les fichiers JAR en recherchant `/META-INF/MANIFEST.MF '. Les répertoires seraient une autre affaire.

Autres conseils

Un ApplicationContext Spring peut le faire de manière simple:

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

Voir ResourcePatternResolver # getResources ou ApplicationContext .

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

mettez l'extrait dans votre pom.xml

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

Un fichier JAR n'est qu'un autre fichier ZIP, n'est-ce pas?

Donc, je suppose que vous pouvez itérer les fichiers jar à l'aide de http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html

Je pense à quelque chose comme:

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

Salut. Keith.

Eh bien, cela ne provient pas de Java, mais

jar -tvf nom_jar | grep xml $

va vous montrer tous les XML dans le jar.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top