Java 将Quartz代码迁移到2.2.x

Java 将Quartz代码迁移到2.2.x,java,quartz-scheduler,Java,Quartz Scheduler,我一直在努力将石英代码从1.8.6改为2.x.x。您可能知道,在Quartz 2中,有很多API更改。我试图解决的问题之一是安排工作。以前,代码是这样的: private JobSchedule scheduleExistingJob(JobSchedule schedule) throws SchedulerException { JobInfo jobInfo = schedule.getJobInfo(); Trigger trigger = QuartzUtils.create

我一直在努力将石英代码从1.8.6改为2.x.x。您可能知道,在Quartz 2中,有很多API更改。我试图解决的问题之一是安排工作。以前,代码是这样的:

private JobSchedule scheduleExistingJob(JobSchedule schedule) throws SchedulerException
{
  JobInfo jobInfo = schedule.getJobInfo();

  Trigger trigger = QuartzUtils.createTriggerFromJobSchedule(schedule);

  trigger.setJobName(jobInfo.getName());
  trigger.setJobGroup(jobInfo.getGroup());
  DateTime nextRunDateTime = new DateTime(m_scheduler.scheduleJob(trigger));
  JobSchedule newSched = updateScheduleNextRunDateTime(schedule, nextRunDateTime);
  return newSched;
}
对于这段旧代码,有两个语法错误:一个是trigger.setJobNamejobInfo.getName;另一个在trigger.setJobGroupjobInfo.getGroup上

他们都抱怨类型触发器的setJobNameString方法未定义。这并不奇怪

我正试图找出如何使其在Quartz 2.x中兼容,这是我迄今为止提出的:

private JobSchedule scheduleExistingJob(JobSchedule schedule) throws SchedulerException
{
  JobInfo jobInfo = schedule.getJobInfo();

  JobDetail job = newJob()
      .withIdentity(jobInfo.getName(), jobInfo.getGroup())
      .build();

  Trigger trigger = QuartzUtils.createTriggerFromJobSchedule(schedule);

  Trigger t = newTrigger()
      .forJob(job)
      .build(); 

  DateTime nextRunDateTime = new DateTime(m_scheduler.scheduleJob(trigger));
  JobSchedule newSched = updateScheduleNextRunDateTime(schedule, nextRunDateTime);
  return newSched;
}
我不知道如何将工作信息/组与触发器合并。在新的API中,我似乎无法指定通用触发器,它必须是Cron或简单触发器。我可能也在想太多了


非常感谢您的帮助。

尝试使用下一个迁移手册:

我也遇到了同样的问题,请帮助