2016-11-01 23 views
0

プログラムの実行をスケジュールする方法をクォーツに学習しようとしています。私は小さな問題に遭遇していますが、私の入力には反応しないようです。以下のコードを使用して、単純な例を作成して、「単純な例」を画面に表示します。しかし、時間を設定してプログラムを実行すると、何も起こりません。私は走りから2分の間それをセットし、ちょうど待つが、それはべきでない振る舞いではない。私は何かエラーや何も得ていない、それはただ何もしていない。助けていただければ幸いです。開始時間に達したときにクォーツスケジューラが応答しない

package schedulers; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import org.quartz.CronScheduleBuilder; 
import org.quartz.CronTrigger; 
import org.quartz.JobBuilder; 
import org.quartz.JobDetail; 
import org.quartz.Scheduler; 
import org.quartz.SchedulerException; 
import org.quartz.SimpleScheduleBuilder; 
import org.quartz.SimpleTrigger; 
import org.quartz.Trigger; 
import org.quartz.TriggerBuilder; 
import org.quartz.impl.StdSchedulerFactory; 
import static org.quartz.JobBuilder.*; 
import static org.quartz.JobBuilder.*; 
import static org.quartz.SimpleScheduleBuilder.*; 
import static org.quartz.CronScheduleBuilder.*; 
import static org.quartz.CalendarIntervalScheduleBuilder.*; 
import static org.quartz.TriggerBuilder.*; 
import static org.quartz.DateBuilder.*; 

public class SimpleExample { 

public static void main(String args[]) throws Throwable{ 
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 

     JobDetail job = newJob(HelloJob.class) 
      .withIdentity("cronJob", "testJob") 
      .build(); 

     String startDateStr = "2016-11-01 09:41:00.0"; 
     // String endDateStr = "2013-09-31 00:00:00.0"; 

     Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(startDateStr); 
     //Date endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(endDateStr); 

     CronTrigger cronTrigger = newTrigger() 
      .withIdentity("trigger1", "testJob") 
      .startAt(startDate) 
      .withSchedule(CronScheduleBuilder.cronSchedule("0 0 9-12 * * ?").withMisfireHandlingInstructionDoNothing()) 
      .build(); 

     scheduler.scheduleJob(job, cronTrigger); 
     scheduler.start(); 
    }  

}

package schedulers; 

import org.quartz.Job; 
import org.quartz.JobExecutionContext; 
import org.quartz.JobExecutionException; 

/** 
* This class defines a quartz job. 
* @author 
*/ 
public class HelloJob implements Job{ 

public void execute(JobExecutionContext arg0) throws JobExecutionException { 
    System.out.println("Simple Exapmle");  
} 
} 

答えて

0

スケジューラにのみ起動します。 Only issueはあなたのstartdateStrに見えます。実際の現在の日付ではない可能性があり、プロセスを開始するための時間に達していません。私はちょうど以下の開始日を置き換えることによってあなたのコードを試して、うまくいった。迅速な結果のためにも

Calendar cal = Calendar.getInstance(); 
Date startDate = cal.getTime(); 

私は5秒、すなわち"*/5 * * * * ?"ごとにcronのを変更しました。

以下は私の結果です。

2016-11-01 10:20:28 INFO StdSchedulerFactory:1339 - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties' 
2016-11-01 10:20:28 INFO StdSchedulerFactory:1343 - Quartz scheduler version: 2.2.1 
2016-11-01 10:20:28 INFO QuartzScheduler:575 - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started. 
Simple Exapmle 
Simple Exapmle 
Simple Exapmle 

これは役に立ちます。

+0

これは多くの助けとプログラムが実行されました。ありがとうございました。しかし、私はこれを任意の曜日または時間に実行するようにスケジュールできます。私があなたが提供するコードを使ってそれを達成する方法がわかりません。 – Jrawr

+0

特定の時間にCalendarオブジェクトに渡すことはできますか? – Jrawr

+0

@Jrawrあなたのコードは動作しますが、あなたのシステム時間があなたの開始時刻、すなわち '2016-11-01 09:41:00.0'に達すると。開始時刻に最新の+バッファをキャプチャして、すぐに結果を確認できるようにしてください。 – Akshay

0

問題を修正しました。問題はCronの表現にあるようだ。私がそれらをよりうまく構築する方法を理解したら、私が望むときにそれらを実行させることができました。これは多くの助けた

"0 26 11 01 11 ?" 
関連する問題