1

您能否提供表达式来配​​置调度程序以在替代星期天执行。

或者,我尝试使用表达式0 0 6 ? * 1#2,1#4在第 2 和第 4 个星期日运行,但未能触发

提前致谢。

4

1 回答 1

0

试试你的例子,

JobDetail job = newJob(SimpleJob.class)
        .withIdentity("job1", "group1")
        .build();

CronTrigger trigger = newTrigger()
        .withIdentity("trigger1", "group1")
        .withSchedule(cronSchedule("0 0 6 ? * 1#2,1#4"))
        .build();

Date ft = sched.scheduleJob(job, trigger);
sched.start();

Date nextFireTime = trigger.getNextFireTime();
System.out.println(nextFireTime);

我得到以下异常:

Exception in thread "main" java.lang.RuntimeException: 
CronExpression '0 0 6 ? * 1#2,1#4' is invalid,.
at org.quartz.CronScheduleBuilder.cronSchedule(CronScheduleBuilder.java:105)
at org.quartz.examples.example3.CronTriggerExample.run(CronTriggerExample.java:66)
at org.quartz.examples.example3.CronTriggerExample.main(CronTriggerExample.java:110)
Caused by: java.text.ParseException: Support for specifying multiple "nth" days is not imlemented.
at org.quartz.CronExpression.buildExpression(CronExpression.java:483)
at org.quartz.CronExpression.<init>(CronExpression.java:276)
at org.quartz.CronScheduleBuilder.cronSchedule(CronScheduleBuilder.java:102)
... 2 more

所以,它没有实现;是否修补 Quartz 以支持此用例,或者您可以使用 2 个不同的触发器,一个用于 1#2(第 2 个星期日),另一个用于 2#4(第 4 个星期日)

注意:我使用了最新的石英,2.2

于 2012-06-15T12:00:12.237 回答