我有一些代码可以获得如下资源:
public static final String CONVERTER_FILE = "META-INF/jumbo-converters";
static {
ClassLoader ldr = Thread.currentThread().getContextClassLoader();
Enumeration<URL> e = ldr.getResources(CONVERTER_FILE);
但是当我在JUnit测试(Java 6)中运行它时,枚举为空。项目中有许多子项目有以下文件:
myProject/mySubProject/src/main/resources/META-INF/jumbo-converters
我相信它在过去一直有效。 getResources
做了什么?以及如何调试当前的故障?
答案 0 :(得分:2)
要使用ClassLoader.getResources()
加载文件,必须在类路径中找到它。解决方案是确保META-INF
的父文件夹位于类路径中。
答案 1 :(得分:1)
除非聚合项目依赖于模块,否则模块(子项目)的资源不会添加到聚合项目的类路径中。作为项目的模块不会在任何一个方向上建立依赖关系。
在上面的例子中,您应该将mySubProject的依赖项添加到myProject。因此,使myProject依赖于mySubProject。