解决quartz 定时任务报错问题

定时任务运行提示:


java.lang.ClassCastException: bdhj.modules.job.entity.ScheduleJobEntity cannot be cast to bdhj.modules.job.entity.ScheduleJobEntity
    at bdhj.modules.job.utils.ScheduleJob.executeInternal(ScheduleJob.java:33)
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

2020-01-16 09:55:00.075 ERROR 8328 --- [eduler_Worker-1] org.quartz.core.ErrorLogger              : Job (DEFAULT.TASK_3 threw an exception.

org.quartz.SchedulerException: Job threw an unhandled exception.
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.ClassCastException: bdhj.modules.job.entity.ScheduleJobEntity cannot be cast to bdhj.modules.job.entity.ScheduleJobEntity
    at bdhj.modules.job.utils.ScheduleJob.executeInternal(ScheduleJob.java:33)
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    ... 1 common frames omitted

2020-01-16 09:57:00.067 ERROR 8328 --- [eduler_Worker-2] org.quartz.core.JobRunShell              : Job DEFAULT.TASK_3 threw an unhandled Exception: 
根据报错提示,查询网上解决方案,是因为热加载原因,热加载配置可通过如下网页访问:

https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools

在pom文件中注释掉一下代码即可:


JVM判断两个类对象是否相同的依据:一是类全称;一个是类加载器,既然不是类名的问题,那肯定就是类加载器不同导致的。

spring-boot-devtools会检测类路径的变化,当类路径内容发生变化后会自动重启应用程序。Spring Boot的重启技术通过使用两个类加载器。由于使用的是双类加载机制重启会非常快,如果启动较慢也可使用JRebel重加载技术。

(1)base classloader (Base类加载器):加载不改变的Class,如第三方提供的jar包。

(2)restart classloader(Restart类加载器):加载正在开发的Class。

你可能感兴趣的:(技术)