我正在尝试使用石英来执行每天重新填充缓存的作业。这并不工作,但我的日志获取与像这样的垃圾邮件JobPersistenceExceptions:由于ClassNotFoundException导致的石英失火
错误[2016年7月13日13时32分01秒JobStoreSupport.java:3952] - MisfireHandler:错误处理失效:无法保存触发 'Test.TriggerCacheReloadJob' 的 'Test.CacheReloadJob' 工作:com.test.tarif.jobs.CacheReloadJob org.quartz.JobPersistenceException:无法储存触发 'Test.TriggerCacheReloadJob' 的 “Test.CacheReloadJob ' job:com.test.tarif.jobs.CacheReloadJob [请参阅嵌套异常: java.lang.ClassNotFoundException: com.test.tarif.jobs.CacheReloadJob]在 org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1212) 在 org.quartz.impl.jdbcjobstore.JobStoreSupport.doUpdateOfMisfiredTrigger(JobStoreSupport.java :1026) 在 org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:975) 在 org.quartz.impl.jdbcjobstore.JobStoreSupport.doRecoverMisfires(JobStoreSupport.java:3187) 在 有机quartz.impl.jdbcjobstore.JobStoreSupport $ MisfireHandler.manage(JobStoreSupport.java:3947) at org.quartz.impl.jdbcjobstore.JobStoreSupport $ MisfireHandler.run(JobStoreSupport.java:3968)
所致:抛出java.lang.ClassNotFoundException:在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 在 有机 com.test.tarif.jobs.CacheReloadJob。 apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 在 org.quartz.simpl.InitThreadContextClassLoadHelper.loadClass(InitThreadContextClassLoadHelper.java:72) 在 org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper。 java:114) at org.quartz.simpl.CascadingClassLoadHelper.loadC小姑娘(CascadingClassLoadHelper.java:138) 在 org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectJobDetail(StdJDBCDelegate.java:873) 在 org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1194) ...
我quartz.properties:
org.quartz.scheduler.instanceName = Test_Scheduler
org.quartz.scheduler.instanceId = 1
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.scheduler.misfirePolicy = doNothing
我的计划:
public class RestStarterListener implements ServletContextListener {
@Override
public void contextInitialized(final ServletContextEvent arg0) {
try {
log.info("Starting");
JobDetail job = JobBuilder.newJob(CacheReloadJob.class)
.withIdentity("job1", "group1")
.build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(07, 00)).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.clear();
scheduler.scheduleJob(job, trigger);
scheduler.start();
} catch (SchedulerException e) {
log.error("Failed to start Job");
log.error(e, e);
}
}
}
Job.class具有一个零参数构造函数,实现Job并保存填充缓存的方法。这很长。 正如我所说,这项工作在7:00工作,但它每隔4分钟就会以这些例外的方式来扫描日志。这里的任何人都知道如何解决这个问题或者至少如何忽略这些失误?
例外告诉你一些组件希望装入类com.test.tarif.jobs.CacheReloadJob同时,该JVM无法加载类(意思是:有在您的JVM的类路径中没有该类的.class文件)。所以,而不是忽略这个例外;我会建议找出你可以找到相应的.class(可能在一些库中);然后确保您的JVM可以访问它。 – GhostCat
它位于WEB-INF \ classes目录下并且可以访问。 – teair
那么,该消息说别的?! – GhostCat