使用JVM分叉时Grails混合不起作用

使用JVM分叉时Grails混合不起作用,grails,grails-2.3,Grails,Grails 2.3,升级到Grails2.3.5后,我发现我的混搭只有在JVM分叉关闭时才能工作 我所有的控制器都有这样的代码 import util.MyMixin @Mixin(MyMixin) class MyController { 其中,MyMixin在src/groovy/util中定义,看起来像 package util class MyMixin { private def aMethod(someArgs) { // do something } } 当Bu

升级到Grails2.3.5后,我发现我的混搭只有在JVM分叉关闭时才能工作

我所有的控制器都有这样的代码

import util.MyMixin

@Mixin(MyMixin)
class MyController {
其中,
MyMixin
src/groovy/util
中定义,看起来像

package util

class MyMixin {
    private def aMethod(someArgs) {
        // do something
    }
}
BuildConfig.groovy
包含以下代码时

forkConfig = [maxMemory: 1024, minMemory: 64, debug: false, maxPerm: 256]
grails.project.fork = [
   test: forkConfig, // configure settings for the test-app JVM
   run: forkConfig, // configure settings for the run-app JVM
   war: forkConfig, // configure settings for the run-war JVM
   console: forkConfig // configure settings for the Swing console JVM
]
然后我得到以下错误

MissingMethodException occurred when processing request:
No signature of method: MyController.aMethod() is applicable for argument types
参数类型匹配,并且当我在
BuildConfig.groovy
中没有JVM分叉代码时,代码当然可以工作


在分叉JVM时,我是否需要做一些特殊的事情来让mixin工作?我之所以使用forking,是因为Grails 2.3.5推荐使用它,而我在没有使用它时遇到了问题:

我在使用Grails域对象的mixin时遇到了困难,听到您在使用控制器时遇到了困难,我并不感到惊讶。Grails对域、控制器和服务的管理非常严格,难怪正常的@mixin可能会以某种方式被破坏。我已经成功地通过元类生成器DSL注入方法,如下所示:

targetClass.metaClass {
    someMethod { someParam ->
        // do something
    }
}

你必须自己在所有的目标类中调用它。。。它不像@Mixin那么优雅,但似乎很管用。

这是或@Mixin?我不知道有什么不同。我怎么说?进口商品中没有“Mixin”。。。应该有吗?那么我猜您使用的是
groovy.lang.Mixin
。试着用另一个。好的。。。因此,我尝试将grails和groovy Mixin显式地与以下代码一起使用
@groovy.lang.Mixin(MyMixin)
@grails.util.Mixin(MyMixin)
,groovy Mixin在grails Mixin失败时工作。我应该关心这件事吗?解决问题的最好办法是什么?将我的所有mixin更改为显式引用groovy mixin?好吧,现在这很有趣。如今,
@groovy.lang.Mixin
@grails.util.Mixin
都不起作用。