gpt4 book ai didi

java - ClassCastException,尽管使用Quartz Scheduler时类,包和类加载器相同

转载 作者:行者123 更新时间:2023-12-01 06:03:33 24 4
gpt4 key购买 nike

因此,我遇到了这个问题,我什至没有意识到可能会发生。
到目前为止,我的理解是JVM通过类名,程序包名和类加载器名的组合来识别类。我已经验证所有这3个都匹配,但仍在获取ClassCastException。

@Component
public class SomeBean(){
//this is my service
}


我可以使用我的类中的spring autowired成功地注入它,将其注入到Quartz Scheduler的上下文中,如下所示:

scheduler.getContext().put("Key",SomeBeanInstance);


我试图在我的Quartz Job的execute方法中获取此bean,大致如下所示:

SomeBean someBeanInstance = (SomeBean) schedulerContext.get("key");


这给了我类强制转换异常:
cannot cast a.b.SomeBean to a.b.SomeBean。我在注入someBean的类和Quartz作业上都验证了classLoader,这是相同的。是 RestartClassLoader (org.spring.devtools)

如何解决此问题?

有没有更好的方法将服务bean注入到石英作业中?

最佳答案

我对Spring不熟悉,但是我将要谈论用Java进行转换

A b = (c)d



  编译时检查(1):


dc的类型必须具有某种关系,即子对父或父对子
  孩子或同类型。


  编译时检查(2):


c必须与 A相同或衍生。


  运行时检查:


d的运行时对象类型必须与 c相同或派生。

注意:

我想在您的情况下,您不满意上次检查。

关于java - ClassCastException,尽管使用Quartz Scheduler时类,包和类加载器相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51189137/

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