Grails 圣杯赢了';无法读取外部配置文件?

Grails 圣杯赢了';无法读取外部配置文件?,grails,configuration-files,grails-2.3,Grails,Configuration Files,Grails 2.3,我在Windows7上。在我的Grails(2.3.6)应用程序的Config.groovy文件中,我有: grails.config.locations = [ "file:/etc/myapp/env.groovy" ] // fizz.buzz is defined inside env.groovy println "fizz.buzz=${fizz.buzz}" 在myD:\驱动器的根目录下: etc/ myapp/ env.groovy 当我运行

我在Windows7上。在我的Grails(2.3.6)应用程序的
Config.groovy
文件中,我有:

grails.config.locations = [
    "file:/etc/myapp/env.groovy"
]

// fizz.buzz is defined inside env.groovy
println "fizz.buzz=${fizz.buzz}"
在my
D:\
驱动器的根目录下:

etc/
    myapp/
        env.groovy
当我运行
grails-Dgrails.env=localrunapp
时,我得到以下输出:

fizz.buzz=[:]
这是怎么回事?为什么Grails找不到我的
env.groovy
文件和/或读取它的属性

我的权限:

在groovy控制台中运行
文件('/etc/myapp/env.groovy')。absolutePath
,我得到:

Exception thrown

groovy.lang.MissingMethodException: No signature of method: ConsoleScript2.File() is
applicable for argument types: (java.lang.String) values: [/etc/myapp/env.groovy]
Possible solutions: find(), find(groovy.lang.Closure), use([Ljava.lang.Object;),
with(groovy.lang.Closure), is(java.lang.Object), wait()
我还尝试运行我的应用程序,并通过如下开关在命令行上传递
fizz.buzz
的值:

grails -Dgrails.env=local -Dfizz.buzz="true" run-app

结果是一样的是否有可能正在读取配置,但在
println
Config.groovy
中运行时,配置不可用(缓存等)?

您将这一行放在哪里:
//fizz.buzz在env.groovy println“fizz.buzz=${fizz.buzz}”中定义
如果这是在
Config.groovy
y中,您将无法获得输出,请尝试从控制器中打印它,例如
render grailsApplication.Config.fizz.buzz
还应确保运行grails的用户对
/etc/myapp/env.groovy
具有读取权限。不,您不需要使用反斜杠。它应该会起作用。如果打开一个
groovyConsole
并执行
新文件('/etc/myapp/env.groovy').absolutePath
,您得到了什么?请给出双斜杠,看看它是否有效。还可以使用完整的路径测试它:“C:\\\\env.groovy”它应该是
new文件('/etc/myapp/env.groovy')。绝对路径
…包括
new
关键字您可以试着这样包括吗:grails.config.locations=[“File:D:\\etc\\myapp\\env.groovy”]