好的,所以我想安排一个任务在每个月的最后一天上午10:10运行.我的cron表达是
0 10 10 L * ?
Run Code Online (Sandbox Code Playgroud)
现在问题是CronSequenceGenerator为'L'值抛出NumberFormatException.这意味着Spring的CronSequenceGenerator不支持这种表达式.如何以任何其他方式执行此操作(解决方法).我不想使用quartz或者是spring的在新版本中支持这一点.
这是完整的堆栈跟踪:
Exception in thread "main" java.lang.NumberFormatException: For input string: "L"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.valueOf(Integer.java:582)
at org.springframework.scheduling.support.CronSequenceGenerator.getRange(CronSequenceGenerator.java:324)
at org.springframework.scheduling.support.CronSequenceGenerator.setNumberHits(CronSequenceGenerator.java:297)
at org.springframework.scheduling.support.CronSequenceGenerator.setDays(CronSequenceGenerator.java:275)
at org.springframework.scheduling.support.CronSequenceGenerator.setDaysOfMonth(CronSequenceGenerator.java:266)
at org.springframework.scheduling.support.CronSequenceGenerator.parse(CronSequenceGenerator.java:239)
at org.springframework.scheduling.support.CronSequenceGenerator.<init>(CronSequenceGenerator.java:81)
at org.springframework.scheduling.support.CronTrigger.<init>(CronTrigger.java:54)
at org.springframework.scheduling.support.CronTrigger.<init>(CronTrigger.java:44)
at com.hcdc.coedp.datantar.scheduler.SchedulerUtil.start(SchedulerUtil.java:75)
at com.hcdc.coedp.datantar.scheduler.SchedulerUtil.changeTrigger(SchedulerUtil.java:106)
at com.hcdc.coedp.datantar.scheduler.SchedulingService.scheduleTransfer(SchedulingService.java:70)
at com.hcdc.coedp.datantar.scheduler.Scheduler.schedule(Scheduler.java:107)
at main.Main.main(Main.java:47)
Run Code Online (Sandbox Code Playgroud)
更新:
以下是我的调度方法
/**
* Schedule a task {@link Task} with a specified cron expression.
* @param task {@link Task}
* @param cronExpression cron expression to be applied must …Run Code Online (Sandbox Code Playgroud) 我想在“每个月的最后一天 10:15”和“每个月的第一个星期天”运行一个 spring 调度器作业 -
我在下面尝试过 - 但它在初始化 spring 上下文时出错:
org.springframework.boot.SpringApplication:应用程序启动失败 java.lang.IllegalStateException:遇到无效的@Scheduled 方法“monthEndSchedule”:对于输入字符串:“L”
@Override
@Scheduled(cron = "0 15 10 L * ?")
public void monthEndSchedule() {
//
}
Run Code Online (Sandbox Code Playgroud)
虽然下面的作品在“每天凌晨 1 点”运行
@Override
@Scheduled(cron = "0 0 1 * * ?")
public void surveyDailySchedule() {
//
}
Run Code Online (Sandbox Code Playgroud)
我使用过的 Cron 表达式参考:http : //www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html