假设我的类是从压缩的 .war 文件中加载或在其他地方加载的,我如何才能发现给定包中的所有资源?枚举文件不会真正起作用,因为这是一个战争文件。这很可能涉及使用当前的类加载器?
有没有一个图书馆可以做这样的事情?谷歌搜索只发现了一些带有列表文件的黑客行为。
是的。您可以使用ClassLoader.getResources("")
;
或者您可以使用雪貂 API:
https ://www.ohloh.net/p/pureperfect-ferret
此 API 允许您使用访问者模式扫描类路径以及任意存档和目录。
不,您不能列出包中的资源,因为 JVM 根本不知道包中的资源。看到这个问题。
Spring 框架提供了一个名为PathMatchingResourcePatternResolver
. 使用这个类,您可以使用通配符提供 Ant 样式路径,它会为您找到相关资源(搜索类路径上的文件夹和 jar)。
我这样做: - 在打包之前,ls myResources/*.ext > myResources/list.txt
- 然后先读取文件