我需要在上午01:00开始每周一次的工作。
应用程序打包为jar。
在应用程序上作为java -jar在Windows上运行它通常在CronTrigger中报告的时间启动作业。
在Linux服务器上运行,应用程序似乎每秒都在循环运行。
Quartz Dependency Maven
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.2</version>
</dependency>
** 正在使用此版本,因为服务器运行java 1.4。最新版本的石英在运行app **时产生了错误
我尝试将cron表达式从星期一到星期五凌晨1点运行一次。 (0 0 1?* MON-FRI)
我每天都在00:00尝试(0 0 0?* * *)
参考: cron generator https://www.freeformatter.com/cron-expression-generator-quartz.html
类
package com.everis.centers;
import java.util.TimeZone;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import com.everis.centers.job.ExecuteJob;
public class ExportsApplication {
private static final String PERIOD = "0 0 1 ? * MON-FRI";
private static final String PERIOD_2 = "0 0 0 ? * * *";
public static void main(String[] args) {
try {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
JobDetail job = new JobDetail("exportJob", "vj1", ExecuteJob.class);
CronTrigger ct = new CronTrigger("exportTrigger", "vt1", PERIOD);
ct.setTimeZone(TimeZone.getTimeZone("America/Sao_Paulo"));
scheduler.scheduleJob(job, ct);
scheduler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果您使用表达式cron (0 * / 2 *?* *)每天运行2分钟。它工作正常。 我不明白问题的原因,不仅每天凌晨1点进行一次。如果有人可以提供帮助,我已经清除了所有文件。
观测值
我意识到,当达到执行时间时,它会循环执行。也就是说,如果我设置为从那个时间开始运行1点钟,它就会循环执行。而不是跑一次并等待第二天。