Wie kann ich entdecken Ressourcen in einem Java-jar mit einem Platzhalter Namen?

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

  •  02-07-2019
  •  | 
  •  

Frage

Ich möchte alle XML-Dateien finden, die meine Klassenladeprogramm der Verwendung eines Wildcard-Muster bewusst ist. Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Es erfordert ein wenig Trickserei, aber hier ist eine relevante Blogeintrag . Sie schätzen, zuerst die URLs der Gläser, dann das Glas öffnen und seinen Inhalt scannen. Ich glaube, Sie würden die URLs aller Gläser durch die Suche nach `/META-INF/MANIFEST.MF‘ entdecken. Verzeichnisse wäre eine andere Sache sein.

Andere Tipps

Ein Frühling ApplicationContext kann dies trivialerweise tun:

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

Siehe ResourcePatternResolver # GetResources oder Application .

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

setzen Sie den Code-Schnipsel in Ihrem pom.xml

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

Eine JAR-Datei ist nur eine andere ZIP-Datei, nicht wahr?

Also ich denke, man könnte die JAR-Dateien iterieren mit http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html

Ich denke, so etwas wie:

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

Prost. Keith.

Nun, es ist nicht aus Java, aber

jar -tvf jarname | grep xml$

zeigt Ihnen alle XMLs in das Glas.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top