gpt4 book ai didi

grails - 域类中的MissingMethod异常

转载 作者:行者123 更新时间:2023-12-02 15:38:55 26 4
gpt4 key购买 nike

每次重新启动应用程序时,我都会在Grails域类的动态方法上遇到MissingMethodException。

我有3节课:

Manager.groovy:该类包含一个Java ScheduledThreadPoolExecutor和一个初始化方法,该方法创建Worker并将这些Worker提交给执行者。

Worker.groovy:实现Runnable并调用Domain动态方法。例如:MyDomain.get()

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

有时,工作人员在域上调用了动态方法,而我却遇到了MissingMethodException。

知道如何解决吗?

谢谢

最佳答案

让您的Workerextend Thread(或者,让new Thread(Runnable)装饰它)并将Groovy ContextClassLoader传递给它:

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

要么
Thread worker = new Thread(new Worker())
worker.setContextClassLoader(
Thread.currentThread().getContextClassLoader())
manager.schedule(worker, ..)

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

关于grails - 域类中的MissingMethod异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4156411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com