ワイルドカード名を持つ Java jar 内のリソースを検出するにはどうすればよいですか?

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

  •  02-07-2019
  •  | 
  •  

質問

ワイルドカード パターンを使用して、ClassLoader が認識しているすべての XML ファイルを検出したいと考えています。これを行う方法はありますか?

役に立ちましたか?

解決

少しコツが必要ですが、関連するものは次のとおりです ブログの記事. 。まず jar の URL を調べてから、jar を開いてその内容をスキャンします。`/META-INF/MANIFEST.MF' を検索すると、すべての jar の URL が見つかると思います。ディレクトリについては別の問題になります。

他のヒント

ApplicationContext これは簡単に行うことができます:

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

見る ResourcePatternResolver#getResources, 、 または アプリケーションコンテキスト.

 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>

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$"));

乾杯。キース。

まあ、それは Java 内からではありませんが、

jar -tvf jarname | grep xml$

jar 内のすべての XML が表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top