一尘不染

如何正确使用ClassLoader.getResources()?

java

如何使用ClassLoader.getResources()从类路径中查找递归资源?

例如

  • META-INF“目录”中查找所有资源:想象一下

getClass().getClassLoader().getResources("META-INF")

不幸的是,这只会检索URL到恰好该“目录”。

  • 所有资源都已命名bla.xml(递归)

getClass().getClassLoader().getResources("bla.xml")

但这返回一个空Enumeration

还有一个额外的问题:ClassLoader.getResources()与有ClassLoader.getResource()什么不同?


阅读 609

收藏
2020-09-08

共1个答案

一尘不染

没有办法递归搜索类路径。您需要知道资源的完整路径名才能以这种方式检索它。该资源可能位于文件系统中的目录中,也可能位于jar文件中,因此它不像执行“类路径”的目录列表那样简单。您将需要提供资源的完整路径,例如“/com/mypath/bla.xml”。

对于您的第二个问题,getResource将返回与给定资源名称匹配的第一个资源。在javadoc中为getResource给出了搜索类路径的顺序

2020-09-08