Quartz Scheduler作业运行一次,然后给出错误

时间:2014-09-12 07:39:40

标签: java tomcat quartz-scheduler

Quartz TRIGGERS table

我有一个来自Quartz的奇怪行为。清除了quartz数据库表并重新启动tomcat后,该作业能够运行。完成几次运行后,会发生以下错误。我用完了线索,下面有人遇到过这个问题吗?

更新:

如果我从" ERROR"更改了TRIGGER_STATE状态到" WAITING",该作业将再次运行,经过几个完整周期后,它变为" ERROR"具有相同的错误堆栈跟踪。

[scheduler_QuartzSchedulerThread] 00:07:01,007 ERROR org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2908) - Error retrieving job, setting trigger state to ERROR.
org.quartz.JobPersistenceException: Couldn't retrieve job because a required class was not found: com.mbww.scgid.social.facebook.RunFbPageHourlyJob [See nested exception: java.lang.ClassNotFoundException: com.social.facebook.RunFbPageHourlyJob]
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1416)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2903)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$38.execute(JobStoreSupport.java:2871)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3788)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2865)
        at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:319)
Caused by: java.lang.ClassNotFoundException: com.mbww.scgid.social.facebook.RunFbPageHourlyJob
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1483)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
        at org.springframework.scheduling.quartz.ResourceLoaderClassLoadHelper.loadClass(ResourceLoaderClassLoadHelper.java:75)
        at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectJobDetail(StdJDBCDelegate.java:894)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1404)
    ... 5 more

2 个答案:

答案 0 :(得分:1)

这可能是一个类路径错误,您错过了定义类路径。由于您的类路径有问题,您的应用无法找到必要的jar,因而无法找到所需的类。

答案 1 :(得分:0)

令人惊讶的是,基于谷歌先生,这有很多原因。

对于我的情况,这是因为团队中的其他人已经部署了另一个相同的应用程序(具有不同的名称),这实际上导致了对Quartz的混淆。当它试图加载该类时,它有时会尝试从旧应用程序加载该类,而该类不在那里。然后错误才有意义:

  

无法检索作业,因为找不到所需的类:   com.mbww.scgid.social.facebook.RunFbPageHourlyJob

从tomcat中删除旧应用程序后,它现在运行顺畅。