java - 在 spring 3 quartz 调度程序中我遇到了异常

标签 java spring quartz-scheduler

在 spring 3 quartz 调度程序应用程序中,我收到 java.lang.InknownClassChangeError

这里是全部异常日志

org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quartz.JobDetailBean] for bean with name 'JobOne' defined in class path resource [resources/quartz-context.xml]: problem with class file or dependent class; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as super class
            at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1265)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576)
            at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1331)
            at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:897)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:590)
            at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
            at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
            at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
            at com.fourgid.epdsscheduler.MainScheduleApp.init(MainScheduleApp.java:21)
            at javax.servlet.GenericServlet.init(GenericServlet.java:158)
            at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)
            at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)
            at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072)
            at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368)
            at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
            at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
            at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
            at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
            at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1260)
            at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2002)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
            at java.util.concurrent.FutureTask.run(FutureTask.java:138)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:619) 

quartz-context.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="jobA" class="com.fourgid.quartz.schedules.JobOneTrigger" />
    <bean id="jobB" class="com.fourgid.quartz.schedules.JobTwoTrigger" />
    <bean id="jobC" class="com.fourgid.quartz.schedules.JobThreeTrigger" />

    <!-- Quartz Job -->
    <bean name="JobOne" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.fourgid.quartz.schedules.JobOneTrigger" />
    </bean>

    <bean name="JobTwo" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.fourgid.quartz.schedules.JobTwoTrigger" />
    </bean>

    <bean name="JobThree" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.fourgid.quartz.schedules.JobThreeTrigger" />
    </bean>

    <!-- Cron Trigger, run every 5 seconds -->
    <bean id="cronTriggerJobOne" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="JobOne" />
        <property name="cronExpression" value="0 0 1 ? * *" />
    </bean>

    <bean id="cronTriggerJobTwo" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="JobTwo" />
        <property name="cronExpression" value="0 0 9 ? * *" />
    </bean>

    <bean id="cronTriggerJobThree" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="JobThree" />
        <property name="cronExpression" value="0 0 3 ? * *" />
    </bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTriggerJobOne" />
                <ref bean="cronTriggerJobTwo" />
                <ref bean="cronTriggerJobThree" />
            </list>
        </property>
    </bean>

</beans>

感谢您的帮助

最佳答案

Quartz 2 API 发生了很大变化。目前,Spring 3 与 Quartz 2不兼容

如果您使用 Spring 3.x 和 Quartz 2.1.x,则只需进行两处更改。

第一个:用于简单触发器

使用class=”org.springframework.scheduling.quartz.SimpleTriggerFactoryBean”>

第二个:用于 Cron 触发器

使用class=”org.springframework.scheduling.quartz.CronTriggerFactoryBean”>

关于java - 在 spring 3 quartz 调度程序中我遇到了异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50342016/

相关文章:

java - 使用 Quartz 或任何其他 java api 进行动态作业调度

java - 如何在 Spring 中删除身份验证请求?

java - 连接池 C3P0 日志记录

java - JPA:删除孤孙元素时的问题

java - Quartz 在启动时运行作业

mongodb - Grails Quartz MongoDB 连接不断打开

java - 计算 3d 相机矩阵

java - 在旧java版本上编译的jar可以在新应用程序中使用吗?

java - 谷歌应用引擎用户 API

java - 为什么出现java.lang.StackOverflowError : null when I try to print my entity