美好的一天每个人。来自classpath的Groovy资源未加载
我在我的groovy项目(IDE - Intellij Idea 12.6)中使用spock框架进行测试。我斯波克规范类传递文件名,常规的处理对象(即文件在类路径肯定的),但是当我试图让该文件这样
def resource = getClass().getClassloader().getResourceAsStream(filepath)
assert resource != null : "No input stream found for path ${filepath}"
def rootNode = new XmlParser().parse(resource)
然后resource == null
。
我试过调试,在Expression Evaluation窗口中,这段代码getClass().getResource(fileName)
返回资源。
我试着检查第一种情况下(类代码中)使用哪个类加载器,第二种情况下(表达式评估窗口)。
在第一种情况下类加载器是[email protected]
,但在Expression Evaluation窗口类加载器中是[email protected]
我想这就是我的资源为空的原因。
有人可以指导我做什么我做错了,我怎么能加载该资源文件?
UPDATE:
改变了资源文件被解析。当filepath
- 完整的文件路径这个工程,但如果filepath
只是文件名,并在类路径文件,然后resource == null
UPDATE2:
更改装载的方式资源文件,清理依赖位,一切都工作,我想昨天不是我的一天。
只传递文件名只有当资源与'getClass()'引用的类位于同一个包中时才有效,并且只有在使用'Class#getResourceStream'(而不是'ClassLoader#getResourceStream')时才有效。 –