Grails 域类中的MissingMethod异常

Grails 域类中的MissingMethod异常,grails,Grails,每次重新启动应用程序时,Grails域类的动态方法都会出现MissingMethodException 我有三门课: groovy:该类包含一个Java ScheduledThreadPoolExecutor和一个init方法,该方法创建Worker并将这些Worker提交给执行器 groovy:实现可运行和调用域动态方法。例如:MyDomain.get() groovy:在init方法中,我调用manager.init() 有时工作人员在域上调用dynamics方法,我得到MissingMet

每次重新启动应用程序时,Grails域类的动态方法都会出现MissingMethodException

我有三门课:

groovy:该类包含一个Java ScheduledThreadPoolExecutor和一个init方法,该方法创建Worker并将这些Worker提交给执行器

groovy:实现可运行和调用域动态方法。例如:MyDomain.get()

groovy:在init方法中,我调用manager.init()

有时工作人员在域上调用dynamics方法,我得到MissingMethodException

知道怎么修吗


感谢您

让您的
工作者
类扩展
线程
(或者,让一个
新线程(Runnable)
装饰它)并将Groovy
ContextClassLoader
传递给它:

Worker worker = new Worker() // extends Thread
worker.setContextClassLoader(
    Thread.currentThread().getContextClassLoader())
manager.schedule(worker, ..)


原因:Groovy类加载器加载了与运行时元编程相关的特殊Groovy类,如关联元类和调用虚拟方法。您的
ThreadPoolExecutor
可能会使用另一个新的类加载器,它不知道Groovy的“魔力”。

答案解释了一切。谢谢
Thread worker = new Thread(new Worker())
worker.setContextClassLoader(
    Thread.currentThread().getContextClassLoader())
manager.schedule(worker, ..)