Grails:无法对null对象调用方法production()
这是我的Grails:无法对null对象调用方法production(),grails,nullpointerexception,Grails,Nullpointerexception,这是我的Config.groovy的环境部分(使用2.3.6): 当我运行一个grails-Dgrails.env=development运行应用程序时,我得到: |打包应用程序时出错:加载Config.groovy时出错:无法对null对象调用方法production()(使用--stacktrace查看完整跟踪) 这是怎么回事?在新的生产线中使用生产DSL。如果与开发结束的闭包在同一行中使用,那么它将被视为返回类型developmentcall(它是void)的新方法调用,并带有闭包参数。方
Config.groovy
的环境部分(使用2.3.6):
当我运行一个grails-Dgrails.env=development运行应用程序时,我得到:
|打包应用程序时出错:加载Config.groovy时出错:无法对null对象调用方法production()(使用--stacktrace查看完整跟踪)
这是怎么回事?在新的生产线中使用生产DSL。如果与开发结束的闭包在同一行中使用,那么它将被视为返回类型development
call(它是void)的新方法调用,并带有闭包参数。方法名称为production
类似:
development(clos1).production(clos2)
对
development(closure)
production(closure)
因此,将其用作:
environments {
development {
grails.logging.jul.usebridge = true
grails.serverURL = "http://localhost:8080"
}
production {
grails.logging.jul.usebridge = false
grails.serverURL = "http://myapp.example.io"
}
}
另外,对于run app,您不需要将环境指定为development
,默认环境是development,因此只要grails run app
就足够了。谢谢@dmahaptro(+1)-我只是好奇,解析此DSL的实际过程是什么?什么流程/组件(如您所说)将我的生产
DSL视为一个新的方法调用?这是Groovy、Grails中的东西还是完全其他的东西?再次感谢!这是groovy提供的一种语法糖,用于构建DSL,其中方法调用可以在不使用大括号的情况下表示。示例:方法(a,b)
也可以作为方法a,b
调用。
environments {
development {
grails.logging.jul.usebridge = true
grails.serverURL = "http://localhost:8080"
}
production {
grails.logging.jul.usebridge = false
grails.serverURL = "http://myapp.example.io"
}
}