1

代わりの日曜日に実行するようにスケジューラを構成する式を提供してください。

または、第 2 および第 4 日曜日に実行する式を試してみました0 0 6 ? * 1#2,1#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 にパッチを適用するか、または 1#2 (第 2 日曜日) 用と 2#4 (第 4 日曜日) 用の 2 つの異なるトリガーを使用できます。

注:最新のクォーツ、2.2を使用しました

于 2012-06-15T12:00:12.237 に答える