spring集成quartz

spring集成quartz

注意:出现异常“Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class”

Spring3.0不支持Quartz2.0,由于org.quartz.CronTrigger在2.0从class变成了一个interface造成IncompatibleClassChangeError错误:

有两种办法:
第一种减少quartz的版本号为,最好是quartz1.8
另外一种是升级spring版本号为Spring3.2以上
注:Spring3.2.4配置文件里使用CronTriggerFactoryBean来集成quartz2.x,
   使用CronTriggerBean来集成quartz1.8.x及曾经版本号.
 
下面是一个小样例demo
<!-- 启动触发器的配置開始 -->  
    <bean name="startQuertz" lazy-init="false" autowire="no"  
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>  
                <ref bean="myJobTrigger" />  
            </list>  
        </property>  
    </bean>  
    <!-- 启动触发器的配置结束 -->  
  
    <!-- 调度的配置開始 -->  
    <!--  
        quartz-1.8曾经的配置   
    <bean id="myJobTrigger"  
        class="org.springframework.scheduling.quartz.CronTriggerBean">  
        <property name="jobDetail">  
            <ref bean="myJobDetail" />  
        </property>  
        <property name="cronExpression">  
            <value>0/1 * * * * ?</value>  
        </property>  
    </bean>  
    -->  
    <!-- quartz-2.x的配置 -->  
    <bean id="myJobTrigger"  
        class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
        <property name="jobDetail">  
            <ref bean="myJobDetail" />  
        </property>  
        <property name="cronExpression">  
            <value>0/1 * * * * ?</value>  
        </property>  
    </bean>  
    <!-- 调度的配置结束 -->  
  
    <!-- job的配置開始 -->  
    <bean id="myJobDetail"  
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject">  
            <ref bean="myJob" />  
        </property>  
        <property name="targetMethod">  
            <value>work</value>  
        </property>  
    </bean>  
    <!-- job的配置结束 -->  
  
    <!-- 工作的bean -->  
    <bean id="myJob" class="com.tgb.lk.demo.quartz.MyJob" />  
    


package com.demo.test;


import java.util.Date;


/*
 * 使用spring+Quartz运行任务调度的详细类
 * */
public class MyJob {


    /*
     * Description:详细工作的方法,此方法仅仅是向控制台输出当前时间,
     * 输入的日志在:%tomcatRoot%logs omcat7-stdout.yyyy-MM-dd.log中,
     * 当中,yyyy-MM-dd为部署的日期,经试验发现默认情况下并非每天都生成一个stdout的日志文件
     * @return 返回void
     * */
    public void work()
    {
         System.out.println("当前时间:"+new Date().toString());  
    }
}//End of MyJob
原文地址:https://www.cnblogs.com/mfrbuaa/p/4018687.html