2012-01-25 50 views
5

我試圖在Spring 3.0.5中使用Quartz 2.1.1。實例化作業時發生Quartz Scheduler錯誤

我設置了調度這一行: <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"/>

我寫了一個叫TestJob簡單的類,它實現了Job接口。我能夠成功地建立一份工作並觸發和安排工作。問題是,這項工作被觸發和石英試圖實例化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 

如何解決這個問題的任何想法?

+0

你能展示你的TestJob類的代碼嗎?還有你的工作安排? –

回答

10

石英2和彈簧< 3.1是不相容的。所以你可以更新到Spring 3.1或者降級到Quartz 1.8。或者,您可以放棄Spring Quartz適配器並手動使用Quartz 2。我推薦第一種方法。

+0

謝謝。這工作完美 –

+0

不得不升級到春天3.1這是一種痛苦,但它的工作!謝謝! – portforwardpodcast

+2

如果您從3.0升級到3.1,我推薦本指南:http://www.heyitsopower.com/code/upgrading-from-spring-3-0-x-to-spring-3-1-x/ – portforwardpodcast

2

您也可以分配的JobFactory石英自定義作業工廠「SimpleJobFactory」

1

我剛做了一個非常類似的問題,導致我在這裏 - 所造成的重構工作的包 - 一切工作,直到它被部署到集羣 - 石英jdbc使用帶有job_name列的表,舊包持續存在,因此會因相同的錯誤而窒息。刪除持續的觸發器行,或將其放回到要解析的位置。

相關問題