我正在使用Grails 2.4.3,对于我的项目,我需要从/src/java/com/company/MyClass.java中的.java加载资源文件
我尝试了以下代码:
ClassLoader.getSystemResourceAsStream("myfile.txt")
我试图将文件放在项目的任何地方,但它似乎找不到它。
当我在编译期间将文件放在目标/类中时,它工作。但它不可行(我不能在每次部署时都这样做)
如何在grails应用程序中声明资源以在Java代码中使用?
答案 0 :(得分:1)
类路径资源没有专用资源目录,但源目录中包含资源。
您可以将资源放在grails-app/conf
或src/java
的(最好是子目录)中。
您可能会遇到使用系统类加载器加载它们的问题(谁知道Web应用程序中发生了什么类加载器魔术),但以下工作对我来说很好:
def myFileContents = getClass().getResource('/mydir/myfile.txt').text
最后要注意的是,如果文件是java或groovy文件,并且您不希望它编译(我之前遇到过这种情况),那么您可以选择将其直接包含在正确的Web中应用程序目录:web-app/WEB-INF/classes/mydir/myfile.groovy