Подтвердить что ты не робот

Кварц HelloJob

Я новичок в Quartz, и я столкнулся с компиляционной ошибкой. Я просто пытаюсь запустить HelloJob на основе урока кварца 1 для Hello World. У меня возникла проблема с объявлением JobDetail с ошибкой: The method newJob(Class<? extends Job>) в типе JobBuilder не применим для аргументов (класса) ".

Первоначально код имел 3 ошибки в newJob, newTrigger и simpleSchedule был

// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
    .withIdentity("job1", "group1")
    .build();

// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .startNow()
    .withSchedule(simpleSchedule()
            .withIntervalInSeconds(40)
            .repeatForever())            
    .build();

без JobBuilder.newJob(...), TriggerBuilder.newTrigger(...), SimpleScheduleBuilder.simpleSchedule(...). В отличие от приведенного примера, я пошел вперед и добавил импорт и присоединил вызовы класса перед newJob, newTrigger и т.д., Которые избавились от ошибок 2/3. Но, похоже, ошибка сохраняется с помощью

 JobDetail job = JobBuilder.newJob(HelloJob.class)
        .withIdentity("job1", "group1")
        .build();

Я также попытался заменить свою декларацию на работу

JobDetail job = new JobDetail("job1", "group1", HelloJob.class);

но заканчивается на Cannot instantiate the type JobDetail, и, похоже, это несколько примеров.

Будет действительно признателен за разъяснение,

Спасибо!

4b9b3361

Ответ 1

Вам нужна эта строка кода:

import static org.quartz.JobBuilder.*;

А потом в должен работать. Будем надеяться.

Изменить: И УБЕДИТЕСЬ, ЧТОБЫ ЗАВЕРШИТЬ РАБОТУ "HELLOJOB"!

Там.

Ответ 2

Вам нужно добавить четыре импорта для примеров helloJob для работы в quart 2.2.x

import org.quartz.SimpleTrigger;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

Ответ 3

API-интерфейсы Quartz 2 сильно отличаются с Quartz 1 (1.5,1.6 и 1.7) Class JobDetail { }

кварц-1.6.6: http://javasourcecode.org/html/open-source/quartz/quartz-1.6.6/org/quartz/JobDetail.html

Кварц 2:

public interface JobDetail extends Serializable, Cloneable {
}

// we have to create JobDetail in the below way.
JobDetail job = newJob(HelloJob.class)

// we have to create Trigger in the below way.
Trigger trigger = newTrigger()

Не забудьте импортировать ниже

import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;

Ответ 4

Здесь вы идете:

public class HelloJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
    System.out.println("Simple Exapmle");

 }
}

Ответ 5

1-

Quartz предоставляет классы "builder", которые определяют язык, специфичный для домена

Вы можете импортировать отсутствующий DSL через:

import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;

2- Убедитесь, что класс HelloJob реализует org.quartz.Job не любое другое задание:

  public class HelloJob implements org.quartz.Job{

     public void execute(JobExecutionContext context) throws JobExecutionException{
       System.out.println("Hello!  HelloJob is executing.");
     }
  }

В документации кварца вы можете найти tutorial.

Ответ 6

Более подробное описание этого примера на этом сайте. Там вы можете найти библиотеки, необходимые для импорта, а также реализацию задания в классе HelloJob.

Ответ 7

Вы должны реализовать HelloJob.class с интерфейсом Job

используя

import org.quartz.Job;

public class HelloJob implements Job {

}