Невозможно создать экземпляр интерфейса JobDetail при использовании Quartz - PullRequest
2 голосов
/ 09 декабря 2011

Я впервые работаю с Quartz. Я пробую пример программы, которая печатает «Hello World» до начала. Но когда я пытаюсь запустить его, я получаю сообщение об ошибке

Исключение в потоке "main" java.lang.RuntimeException: не компилируется исходный код - org.quartz.JobDetail является абстрактным; не может быть создан at 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) {
        }
    }
}

И 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());
}
}

Ответы [ 2 ]

8 голосов
/ 09 декабря 2011

Вы используете не ту версию Кварца.JobDetail класс в кварце 1.x был изменен на JobDetail интерфейс с реализацией org.quartz.impl.JobDetailImpl в кварце 2.x .

Вы должны либо заменить Quartz 2.x на Quartz 1.x на CLASSPATH, либо лучше использовать новый 2.x API.

0 голосов
/ 09 декабря 2011

Класс JobDetail является абстрактным классом, поэтому использовать его реализацию можно двумя способами

1-й using JobDetailsBean ссылаться на этот пример http://www.java2s.com/Open-Source/Java-Document/J2EE/spring-framework-3.0.0/org/springframework/scheduling/quartz/JobDetailBean.java.htm

2-й с использованием MethodInvokingBean ссылаться на этот примерhttp://www.java2s.com/Open-Source/Java-Document/J2EE/spring-framework-3.0.0/org/springframework/scheduling/quartz/MethodInvokingJobDetailFactoryBean.java.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...