2014-11-04 36 views
2

嗨,我是在Spring MVC的项目中使用石英创建工作Spring MVC中的一个Scheduler实例,我想创建一个Scheduler实例,但我有以下错误,当我尝试这样做:我不能使用石英

Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 

错误:Default constructor cannot handle exception type SchedulerException thrown by implicit super constructor. Must define an explicit constructor

这是我的行家depencies

<!-- QuartzJobBean in spring-context-support.jar --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>3.1.2.RELEASE</version> 
     </dependency> 

     <!-- Spring + Quartz need transaction --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>3.1.2.RELEASE</version> 
     </dependency> 

     <!-- Quartz framework --> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.2.1</version> 
     </dependency> 

,这是我尝试创建一个Scheduler对象的类

import java.util.Locale; 

import org.quartz.Job; 

import org.quartz.JobExecutionContext; 
import org.quartz.Scheduler; 

import org.quartz.impl.StdSchedulerFactory; 




public class PrintSomething implements Job{ 



    Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 


    public void execute(JobExecutionContext ctx) 

    { 
     System.out.printf(new Locale("es", "MX"), "%tc a task is printed...%n", new java.util.Date()); 
    } 
} 

回答

0

getScheduler抛出一个需要在代码块而不是类块中处理的检查异常。

通常,您不会在本身中包含Scheduler代码。创建一个单独的调度程序管理类,其中可以使用单独的方法来处理调度功能。

public class JobScheduler { 
    public static void main(String[] args) { 
     try { 
     // specify the job' s details.. 
     JobDetail job = JobBuilder.newJob(PrintSomething.class) 
            .withIdentity("MyId") 
            .build(); 
     ... // create trigger 

     //schedule the job 
     SchedulerFactory schFactory = new StdSchedulerFactory(); 
     Scheduler scheduler = schFactory.getScheduler(); 
     scheduler.start(); 
     scheduler.scheduleJob(job, someTrigger); 
     } catch (SchedulerException e) { // handle exception here 
     e.printStackTrace(); 
     } 
    } 
}