最近学习quartz调度框架,想整合spring与quartz封装成一个动态的调度框架。
spring版本是3.0.5,quartz使用2.1.1版本,在集成过程中遇到以下异常:
2014-01-18 19:57:10,062 ERROR org.quartz.core.ErrorLogger:(QuartzScheduler.java:2360) - An error occured instantiating job to be executed. job= 'CRON.clearLog'org.quartz.SchedulerException: Problem instantiating class 'org.quartz.jobs.NoOpJob' - [See nested exception: java.lang.AbstractMethodError:
org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(Lorg/quartz/spi/TriggerFiredBundle;Lorg/quartz/Scheduler;)Lorg/quartz/Job;]
at org.quartz.core.JobRunShell.initialize(JobRunShell.java:141)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:381)
Caused by: java.lang.AbstractMethodError:
org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(Lorg/quartz/spi/TriggerFiredBundle;Lorg/quartz/Scheduler;)Lorg/quartz/Job;
at org.quartz.core.JobRunShell.initialize(JobRunShell.java:134)
... 1 more
2014-01-18 19:57:10,062 INFO org.springframework.scheduling.quartz.LocalDataSourceJobStore:(JobStoreSupport.java:3053)
- All triggers of Job DEFAULT.clearLog set to ERROR state.
google上搜了一通,在http://stackoverflow.com这个网站上找到了答案,原来是quartz2与spring3.1之前的版本不兼容
因此,要么是将spring升级到3.1及以上版本,要么是把quartz降级,推荐使用第一种方法。
于是我将spring3.0.5升级到3.1.0,果然就不报错了。在此记录一下,以免以后使用到quartz的时候会犯同样的错!