Define the trigger using CronScheduleBuilder:
import org.quartz.*;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
JobDetail job = newJob(MonthEndJob.class)
.withIdentity("monthEndJob", "billing")
.build();
Trigger trigger = newTrigger()
.withIdentity("monthEndTrigger", "billing")
.withSchedule(cronSchedule("0 0 0 L * ?"))
.build();
scheduler.scheduleJob(job, trigger);Use cronSchedule for the 6-field syntax with seconds. If you prefer the 7-field form with year, use 0 0 0 L * ? *.