Grails 域类中的MissingMethod异常
每次重新启动应用程序时,Grails域类的动态方法都会出现MissingMethodException 我有三门课: groovy:该类包含一个Java ScheduledThreadPoolExecutor和一个init方法,该方法创建Worker并将这些Worker提交给执行器 groovy:实现可运行和调用域动态方法。例如:MyDomain.get() groovy:在init方法中,我调用manager.init() 有时工作人员在域上调用dynamics方法,我得到MissingMethodException 知道怎么修吗Grails 域类中的MissingMethod异常,grails,Grails,每次重新启动应用程序时,Grails域类的动态方法都会出现MissingMethodException 我有三门课: groovy:该类包含一个Java ScheduledThreadPoolExecutor和一个init方法,该方法创建Worker并将这些Worker提交给执行器 groovy:实现可运行和调用域动态方法。例如:MyDomain.get() groovy:在init方法中,我调用manager.init() 有时工作人员在域上调用dynamics方法,我得到MissingMet
感谢您让您的
工作者
类扩展线程
(或者,让一个新线程(Runnable)
装饰它)并将GroovyContextClassLoader
传递给它:
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, ..)