2014-10-31 60 views
1

Grails新手在這裏。我的應用程序在Grails中,我的IDE是IntelliJ IDEA。我配置了我的項目(在IntelliJ中),說我的資源文件夾在root\src\resources之下。我有一個圖像文件,我需要加載到InputStream/BufferedImage中。但是我似乎無法從我的Grails控制器獲取這些資源。這就是我想要的:如何訪問Grails項目中的Java資源?

def image = this.getClass().getClassLoader().getResourceAsStream("image.png") 

但是,這只是返回null。我在Java項目中使用了完全相同的約定(好吧,除了我必須聲明圖像是InputStream類型),並且它在那裏工作。我的印象是,我基本上可以將Java代碼放在Grails項目中,它應該可以工作。我需要採取什麼不同的方式才能在我的Grails控制器中工作?我需要訪問該靜態資源文件。

回答

2

如果您在IntelliJ IDEA中將目錄標記爲源目錄,Grails將不會知道它。您必須通過將新目錄添加爲源目錄或將資源移動到其中一個標準源目錄來正確配置Grails。

我從來沒有真正添加過一個新的源代碼目錄,但是對於this stackoverflow問題的回答看起來很有希望。

除此之外,您可以將資源添加到任何源目錄並將其包含在內,例如:grails-app/conf,src/javasrc/groovy等。此外,web-app/META-INF/classes中的任何文件也將位於應用程序的類路徑中。最後一個很好理解你是否需要複製一個java或groovy源文件(即只複製,不編譯)。

0

試試這個

servletContext.getResourceAsStream("/WEB-INF/resources/yourfile") 
+0

感謝您的建議。我試過這個,但它仍然返回'null' – SoaperGEM 2014-10-31 17:57:55