Reputation: 25
I'm working on a Discord Bot with should do sth every day. I tried using the Quartz library for it, but the job is never executed. Below is the code I use for testing:
import org.quartz.*;
import shedule.Daily;
import static org.quartz.CronScheduleBuilder.cronSchedule;
public class QuartzTestClass {
private void doIt() throws SchedulerException {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler scheduler = schedFact.getScheduler();
scheduler.start();
JobBuilder jobBuilder = JobBuilder.newJob(Job.class);
JobDataMap data = new JobDataMap();
data.put("latch", this);
JobDetail jobDetail = jobBuilder.usingJobData("test", "QuartzTestClass")
.usingJobData(data)
.withIdentity("testJob", "Daily")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("fireEveryDay", "Daily")
.startNow()
.withSchedule(cronSchedule("0 13 22 ? * * *")) //this is now +1 min
.build();
scheduler.scheduleJob(jobDetail, trigger);
}
public static void main (String[] args) throws SchedulerException {
new QuartzTestClass().doIt();
}
private class job implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("executed");
}
}
}
The job is never called. Can some tell me what I did wrong?
Greetings, Martin.
Upvotes: 0
Views: 750
Reputation: 346
This version should work:
import org.quartz.*;
import static org.quartz.CronScheduleBuilder.cronSchedule;
public class QuartzTestClass {
private void doIt() throws SchedulerException {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler scheduler = schedFact.getScheduler();
scheduler.start();
JobBuilder jobBuilder = JobBuilder.newJob(StartMyBotJob.class);
JobDataMap data = new JobDataMap();
data.put("latch", this);
JobDetail jobDetail = jobBuilder.usingJobData("test", "QuartzTestClass")
.usingJobData(data)
.withIdentity("testJob", "Daily")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("fireEveryDay", "Daily")
.startNow()
.withSchedule(cronSchedule("0 13 22 ? * * *")) //this is now +1 min
.build();
scheduler.scheduleJob(jobDetail, trigger);
}
public static void main (String[] args) throws SchedulerException {
new QuartzTestClass().doIt();
}
public static class StartMyBotJob implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("executed");
}
}
}
Upvotes: 1