使用Quartz时无法创建JobDetail接口的实例

Ami*_*mit 2 java quartz-scheduler

这是我第一次使用Quartz.我正在尝试一个预先打印"Hello World"的示例程序.但是,当我尝试运行它时,我得到一个错误说

线程"main"中的异常java.lang.RuntimeException:无法编译的源代码 - org.quartz.JobDetail是抽象的; 无法在QuartzAppSimpleTrigger.main中实例化(QuartzAppSimpleTrigger.java:18)

当我在Netbeans中尝试它时,它要求我实现JobDetail的所有抽象方法.以下是我的代码示例.

import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class HelloSchedule {

    public HelloSchedule() throws Exception {
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler sched = sf.getScheduler();
        sched.start();
        JobDetail jd = new JobDetail("myjob", sched.DEFAULT_GROUP, HelloJob.class);
        SimpleTrigger st = new SimpleTrigger("mytrigger", sched.DEFAULT_GROUP, new Date(),
                null, SimpleTrigger.REPEAT_INDEFINITELY, 60L * 1000L);
        sched.scheduleJob(jd, st);
    }

    public static void main(String args[]) {
        try {
            new HelloSchedule();
        } catch (Exception e) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

HelloJob.java是

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.util.Date;

public class HelloJob implements Job {

public void execute(JobExecutionContext arg0) throws JobExecutionException{

System.out.println("Hello World Quartz Scheduler: " + new Date());
}
}
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 8

您使用的是错误的Quartz版本.Quartz 1.x中的JobDetail 被重构为与Quartz 2.x中的实现接口.JobDetail org.quartz.impl.JobDetailImpl

您应该在CLASSPATH上用Quartz 1.x替换Quartz 2.x或者更好地使用新的2.x API.