8

我想发现我的 ClassLoader 使用通配符模式知道的所有 xml 文件。有没有办法做到这一点?

4

5 回答 5

7

SpringApplicationContext可以轻松做到这一点:

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

请参阅ResourcePatternResolver#getResourcesApplicationContext

于 2008-09-26T11:41:56.407 回答
6
 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>
于 2013-05-19T21:59:17.343 回答
5

它需要一点技巧,但这里有一个相关的博客条目。您首先找出罐子的 URL,然后打开罐子并扫描其内容。我想你会通过查找“/META-INF/MANIFEST.MF”来发现所有 jar 的 URL。目录将是另一回事。

于 2008-09-25T13:28:17.233 回答
1

JAR 文件只是另一个 ZIP 文件,对吗?

所以我想你可以使用http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html来迭代 jar 文件

我在想类似的事情:

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

干杯。基思。

于 2008-09-25T13:47:54.533 回答
-5

好吧,它不是来自 Java 内部,而是

jar -tvf jarname | grep xml$

将向您展示 jar 中的所有 XML。

于 2008-09-25T13:22:11.413 回答