相关疑难解决方法(0)

未加载类路径的Groovy资源

今天是个好日子.

我在我的groovy项目中使用spock框架进行测试(IDE - Intellij Idea 12.6).我的spock规范类将文件名传递给groovy对象进行处理(该文件肯定在classpath中),但当我尝试以这种方式获取该文件时

    def resource = getClass().getClassloader().getResourceAsStream(filepath)
    assert resource != null : "No input stream found for path ${filepath}"
    def rootNode = new XmlParser().parse(resource)
Run Code Online (Sandbox Code Playgroud)

然后resource == null.

我尝试调试,在Expression Evaluation窗口中,此代码getClass().getResource(fileName)返回资源.

我试图检查在第一种情况下使用哪个类加载器(在类中使用代码)和第二种情况(表达式评估窗口).

在第一种情况下,类加载器是sun.misc.Launcher$AppClassLoader@18dabf1,但在Expression Evaluation窗口中,classloader是groovy.lang.GroovyClassLoader$InnerLoader@1e69757我认为这是我的资源为空的原因.

有人可以指导我做错了什么,如何加载该资源文件?

更新:

更改了资源文件的解析方式.当filepath- 文件的完整路径有效,但如果filepath只是文件名和那个文件在classpath中resource == null

更新2:

更改资源文件加载的方式,清理依赖项位,一切正常,我想昨天不是我的一天.

groovy resources classloader

1
推荐指数
2
解决办法
1万
查看次数

标签 统计

classloader ×1

groovy ×1

resources ×1