2012-06-15 53 views
1

您可以提供表達式來配​​置調度程序在備選週日執行。Quartz Scheduler:表達式來配​​置調度程序在備選週中執行

替代地,我試圖用所述表達0 0 6 ? * 1#2,1#4在第二和第四星期日運行,但它未能觸發預先

感謝。

+0

你在說什麼調度器?請準確地說,我們沒有水晶球:) – SirDarius

+0

對不起..這是一個石英調度器 – gajjelli

+0

或者我試着用表達式「0 0 6?* 1#2,1#4」跑在第二和第四個星期天,但是它無法觸發。 – gajjelli

回答

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#4(第四個星期日)

注意:石英,2.2

+0

感謝重播Dahanne。但在我身邊,沒有任何例外。它可以在同一個月內完全運行兩週,但在改變之後它不會被解僱。我找到了一個鏈接http://stackoverflow.com/questions/2819523/does-this-cron-expression-mean-every-other-sunday。這與我的要求類似。但也沒有解決辦法。任何人都可以回答這個問題。 – gajjelli

相關問題