如何在 Grails 应用程序中添加资源文件?

mor*_*gan 6 java grails resources

我正在使用 Grails 2.4.3,对于我的项目,我需要从 /src/java/com/company/MyClass.java 中的 .java 加载资源文件

我尝试了以下代码:

 ClassLoader.getSystemResourceAsStream("myfile.txt")
Run Code Online (Sandbox Code Playgroud)

我试图将文件放在项目中的任何地方,但似乎没有找到。

当我在编译期间将文件放在目标/类中时,它起作用了。但它不可行(我不能在每次部署时都这样做)

如何在 grails 应用程序中声明要在 Java 代码中使用的资源?

Ste*_*nar 2

类路径资源没有专用的资源目录,但资源包含在源目录中。

grails-app/conf例如,您可以将资源放在或中(最好是其子目录)src/java

您可能会遇到使用系统类加载器加载它们的问题(谁知道 Web 应用程序中发生了什么类加载器魔法),但以下内容对我来说效果很好:

def myFileContents = getClass().getResource('/mydir/myfile.txt').text
Run Code Online (Sandbox Code Playgroud)

最后一点,如果文件是 java 或 groovy 文件,并且您不希望它编译(我前段时间遇到过这种情况),那么您可以选择将其直接包含在正确的 Web 应用程序目录中:web-app/WEB-INF/classes/mydir/myfile.groovy