Как я могу обнаружить ресурсы в банке Java с подстановочным именем? - PullRequest
8 голосов
/ 25 сентября 2008

Я хочу обнаружить все xml-файлы, о которых мой ClassLoader знает об использовании шаблона с подстановочными знаками. Есть ли способ сделать это?

Ответы [ 5 ]

7 голосов
/ 26 сентября 2008

Весна ApplicationContext может сделать это тривиально:

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

См. ResourcePatternResolver # getResources или ApplicationContext .

6 голосов
/ 20 мая 2013
 List<URL> resources = CPScanner.scanResources(new PackageNameFilter("net.sf.corn.cps.sample"), new ResourceNameFilter("A*.xml"));

поместите фрагмент в ваш pom.xml

<dependency>
    <groupId>net.sf.corn</groupId>
    <artifactId>corn-cps</artifactId>
    <version>1.0.1</version>
</dependency>
5 голосов
/ 25 сентября 2008

Требуется небольшая хитрость, но вот соответствующая запись в блоге . Сначала вы выясняете URL банок, затем открываете банку и сканируете ее содержимое. Я думаю, что вы найдете URL всех jar-файлов, найдя `/META-INF/MANIFEST.MF '. Каталоги - это другое дело.

1 голос
/ 25 сентября 2008

JAR-файл - это просто еще один ZIP-файл, верно?

Итак, я полагаю, вы можете перебирать jar-файлы, используя http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html

Я думаю что-то вроде:

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

Приветствия. Кит.

0 голосов
/ 25 сентября 2008

Ну, это не изнутри Java, а

jar -tvf jarname | grep xml$

покажет вам все XML-файлы в банке.

...