美好的一天每個人。來自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')時纔有效。 –