これは非常に簡単なはずですが、ジョブが実行されていません。タスクの execute() メソッドにブレークポイントがありますが、そこにスレッドが到達しません。何が悪いのかわかりません。
仕事
class Printer implements Job{
public Printer(){
System.out.println("created printer");
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("hi" + context.getFireTime());
}
}
メインクラス
class MyClass {
public static void main(String[] args) throws Throwable {
Scheduler s = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = newJob(Printer.class).build();
CronTrigger trigger =
newTrigger()
.withIdentity("a", "t")
.withSchedule(cronSchedule("0/5 * * * * ?").inTimeZone(TimeZone.getDefault()))
.forJob(job).build();
s.scheduleJob(job, trigger);
// This prints the right date!
System.out.println(trigger.getNextFireTime());
s.start();
}
}
編集: Quartz.property ファイルがないことを発見したため、クォーツのスレッドプールが作成されていない可能性がありました。したがって、ドキュメントで読んだように、StdSchedulerFactory を使用するコードを次のように置き換えました。
DirectSchedulerFactory.getInstance().createVolatileScheduler(10);
Scheduler s = DirectSchedulerFactory.getInstance().getScheduler();
何だと思う?まだ運がありません。同じ同じ効果。アプリケーションは生き続け、トリガーではなく発火します。