2016-02-17 52 views
-1

| Grails版本:3.0.7Grails插件依赖注入失败域类和控制器

| Groovy版本:2.4.4

| JVM版本:1.8.0_51

我试图安装一个Grails插件:弹头发生器0.5(https://grails.org/plugin/slug-generator

但是,该服务依赖注入不正确或者域类和服务工作,始终是一个空参考。

这已经不是我第一次经历的插件没有成功注入服务:Grails Geocode plugin dependency injection issue

基本上,看来我在一个地步,我不能用我的应用程序中的一些插件,因为我不能在服务依赖计数注射工作。

如果有人能提供一些见解,我会非常感激。

我下面的下面的示例代码:

class Dummy { 
    def slugGeneratorService 

    String name 
    String slug = "" 

    def beforeInsert() { 
     this.slug = slugGeneratorService.generateSlug(this.class, "slug", name) 
    } 

    def beforeUpdate() { 
     if (isDirty('name')) { 
      this.slug = slugGeneratorService.generateSlug(this.class, "slug", name) 
     } 
    } 
} 

下面是一个例子错误日志:

Caused by: java.lang.NullPointerException: Cannot invoke method generateSlug() on null object 

有一件事我注意到的是,在命令行中,以下命令返回没有:

$ grails list-plugins | grep的蛞蝓

但是,如果我寻找另一个插件,我得到的结果:

$ Grails的列表,插件| grep的约达

乔达时间

我可以清楚地看到(通过的IntelliJ),该嵌块发生器插件是在类路径,我可以经由外部库实际访问的所有源。

也许这是对问题的暗示?

回答

0

好的,这似乎是愚蠢地试图在grails 3.x插件中使用grails 2.x插件。

在grails文档中有很多步骤可以将插件从2.x升级到3.x。

我的直接解决方案是简单地创建一个新服务,并将插件中的代码复制到我的应用程序中。工作得很好。

的Grails 3.x的插件:https://bintray.com/grails/plugins 的Grails 2.x的插件:https://grails.org/plugins/

,除非你通过Grails网站导航这不是很明显。例如,如果您从Google直接进入插件页面,兼容性将显示为2.5.x>

但是,实际上这似乎意味着大于2.5.x但小于3。x

希望这可以帮助任何人遇到此问题。