-1

| | Grails バージョン: 3.0.7

| | グルーヴィーなバージョン: 2.4.4

| | JVM バージョン: 1.8.0_51

grails プラグインをインストールしようとしています: Slug Generator 0.5 ( https://grails.org/plugin/slug-generator )

ただし、サービス依存性注入はドメイン クラスまたはサービスのいずれかで正しく機能せず、常に null 参照になります。

プラグインがサービスを正常に注入しないのを経験したのはこれが初めてではありません: Grails Geocode プラグイン依存性注入の問題

基本的に、サービス依存性注入が機能することを期待できないため、アプリケーション内で一部のプラグインを使用できない時点にいるようです。

誰かが洞察を提供できれば、私は最も感謝しています。

私は次のサンプルコードに従っています:

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

私が気付いたことの 1 つは、コマンド ラインで次のコマンドが何も返さないことです。

$ grails リストプラグイン | grep スラッグ

ただし、別のプラグインを検索すると、結果が得られます。

$ grails リストプラグイン | grep ジョーダ

ジョダタイム

スラグ ジェネレーター プラグインがクラスパスにあり、外部ライブラリを介してすべてのソースに実際にアクセスできることが (IntelliJ 経由で) はっきりとわかります。

多分それは問題へのヒントですか?

4

1 に答える 1

0

OK、これは愚かにも grails 2.x プラグインを grails 3.x プラグインで使おうとした私にかかっているようです。

プラグインを 2.x から 3.x にアップグレードするには、さまざまな手順を実行する必要があります。詳細については、grails のドキュメントを参照してください。

私の当面の解決策は、単純に新しいサービスを作成し、コードをプラグインからアプリケーションにコピーすることでした。うまくいきました。

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 より小さいことを意味しているようです。

他の誰かがこれに遭遇した場合、これが役立つことを願っています.

于 2016-02-18T09:22:26.443 に答える