2016-02-17 51 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

希望這可以幫助任何人遇到此問題。