实例化作业时Quartz Scheduler错误

时间:2012-01-25 22:10:13

标签: java spring quartz-scheduler

我正在尝试使用Quartz 2.1.1和Spring 3.0.5。

我用这一行设置了Scheduler: <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"/>

我写了一个名为TestJob的简单类,它实现了Job接口。我能够成功地设置一个工作并触发并安排它。问题是当作业被触发并且quartz尝试实例化TestJob类时,我收到此错误:

[scheduler_QuartzSchedulerThread] ERROR core.ErrorLogger.schedulerError(2360) | An error occured instantiating job to be
 executed. job= 'TEST_JOB.6d2e7ca2-20cd-4e5f-9f32-1626c7128a5d'
org.quartz.SchedulerException: Problem instantiating class 'com.scheduler.TestJob' -  [See nes
ted exception: java.lang.AbstractMethodError: org.springframework.scheduling.quartz.AdaptableJobFactory.newJob(Lorg/quar
tz/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/s
pi/TriggerFiredBundle;Lorg/quartz/Scheduler;)Lorg/quartz/Job;
        at org.quartz.core.JobRunShell.initialize(JobRunShell.java:134)
        ... 1 more

有关如何解决此问题的任何想法?

3 个答案:

答案 0 :(得分:10)

Quartz 2和Spring&lt; 3.1是不相容的。因此,您可以更新到Spring 3.1或降级到Quartz 1.8。或者您放下Spring Quartz适配器并手动使用Quartz 2。我推荐第一种方法。

答案 1 :(得分:2)

您还可以将jobFactory分配给quartz自定义作业工厂“SimpleJobFactory”

答案 2 :(得分:1)

我遇到了一个非常类似的问题,导致我在这里 - 由于重构了一个工作包而导致 - 一切正常,直到它被部署到一个集群 - 石英jdbc使用带有job_name列的表,旧的包保持不变,所以它因同样的错误而窒息。删除持久化的触发器行,或将其放回原来要解决的位置。