1

I am new to java Quartz scheduling and have been trying to run a simple quartz program from a youtube tutorial.

This is the code I tried :

public class drive1 {
    public static void main(String[] args) throws SchedulerException {              
        JobDetail jobDetail = JobBuilder.newJob(Job.class).build();     
        Trigger trigger =  TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").startNow();        
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();        
        scheduler.start();      
        scheduler.scheduleJob(jobDetail, trigger);      
    }
}

This keeps on giving me compilation error at line 4 : Type mismatch: cannot convert from TriggerBuilder<Trigger> to Trigger

So I tried explicitly type casting at line 4 : Trigger trigger = (Trigger)TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").startNow();

This removed the compilation error but now I am getting a run time exception :

Exception in thread "main" java.lang.ClassCastException: org.quartz.TriggerBuilder cannot be cast to org.quartz.Trigger
    at sd.moc.drive1.main(drive1.java:18)

Could someone please help me out. I know this is a noob questions, but I am new to this.

Zeus
  • 319
  • 2
  • 13

1 Answers1

1

I believe you need to 'build' the trigger. So you would need to change

Trigger trigger =  TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").startNow();

to

Trigger trigger =  TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").startNow().build();
mwarren
  • 759
  • 3
  • 6
  • awesome, that seems to solve the problem...but any clue why .startNow(); was not working, as I see ".startNow();" aslo returns "TriggerBuilder" which again extends Trigger ? – Zeus Jun 05 '19 at 08:47
  • TriggerBuilder does not extend Trigger itself, it is a generic type that produces objects that extend Triggers. – mwarren Jun 05 '19 at 08:55