无视,我以某种方式在lib文件夹中得到了2个版本的石英罐。现在正在工作。
我正在努力将用于Quartz 1.7.3的接口升级到2.2.2
我已经解决了编译问题,但是现在我遇到了启动错误,我相信这些错误已本地化为上下文文件中的问题,但是我不确定出什么问题。
错误似乎与定义调度程序和触发器有关。
错误:
INFO | jvm 1 | 2018/06/26 09:24:41 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'intAppService' defined in file [E:\Southern\Apps\INTG\PRDEL\PRDEL01\config\PRdelApp-context.xml]:
Cannot resolve reference to bean 'quartzScheduler' while setting bean property 'quartzScheduler'; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'quartzScheduler' defined in file [E:\Southern\Apps\INTG\PRDEL\PRDEL01\config\PRdelApp-context.xml]: Cannot resolve reference to bean 'cronTrigger' while setting bean property 'triggers' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'cronTrigger' defined in file [E:\Southern\Apps\INTG\PRDEL\PRDEL01\config\PRdelApp-context.xml]: Instantiation of bean failed; nested exception is java.lang.IncompatibleClassChangeError: Implementing class
上下文:
<?xml version="1.0" encoding="UTF-8"?>
<!--Application context definitions for DispatcherServlet.-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
default-autowire="no" >
<!-- ========================= GENERAL DEFINITIONS ========================= -->
<!-- Enable load-time weaving for instrumentation. -->
<!-- Remove in later versions of spring -->
<!-- <context:load-time-weaver/> -->
<!-- Configurer that replaces ${...} placeholders with values from properties files -->
<bean id="propertyConfigurer" class="com.southerncompany.primavera.common.spring.PrimaveraNestedPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:config/application.properties</value>
</list>
</property>
<property name="nestedLocations">
<list>
<value>${app.config.db}/primavera.properties</value>
</list>
</property>
<property name="bootstrapHomePropertyName" value="primavera.bootstrap.home"/>
<property name="bootstrapFolder" value="${app.primavera.bootstrap.folder}"/>
<property name="bootstrapConfiguration" value="${primavera.configuration}"/>
</bean>
<bean id="applicationVersion" class="java.lang.String">
<constructor-arg type="java.lang.String" value="${app.version}"/>
</bean>
<!-- =============================== DOMAIN ============================ -->
<bean name="intAppService" class="com.southerncompany.primavera.prdel.QuartzTaskScheduler" init-method="listen">
<property name="name" value="PvJobListener" />
<property name="quartzScheduler" ref="quartzScheduler"/>
</bean>
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup" value="false" />
<property name="schedulerName" value="PvScheduler" />
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="serviceTask" />
<property name="targetMethod" value="run" />
<property name="concurrent" value="false" />
<property name="group" value="PV" />
<property name="name" value="${app.service.name}${app.service.instance}-Job" />
<!--<property name="jobListenerNames">
<list>
<value>PvJobListener</value>
</list>
</property>-->
</bean>
<bean name="serviceTask" class="com.southerncompany.primavera.prdel.ProjDeleteService">
<property name="serviceTaskName" value="${app.service.name}${app.service.instance}"/>
<property name="primaveraSessionService" ref="primaveraSessionService"/>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail" />
<!--property name="cronExpression" value="10 0/01 * * * ?" /-->
<!-- run every 5 mins -->
<property name="cronExpression" value="0 0/5 * * * ?" />
<!-- run twice a day at 3am and 3pm -->
<!-- <property name="cronExpression" value="0 0 2,15 ? * *" /> -->
<!-- run every 30 minutes, at 10 seconds after the minute (i.e. 10:00:10 am, 10:30:10 am, etc.) -->
<!--property name="cronExpression" value="10 0/30 * * * ?" /> -->
</bean>
<!-- Application shutdown even listeners. Externally loaded by main class. -->
<bean id="serviceStopEventListeners" class="org.springframework.beans.factory.config.ListFactoryBean">
<property name="sourceList">
<list>
</list>
</property>
</bean>
<bean id="primaveraSessionService" class="com.southerncompany.primavera.common.primavera.ApiSessionService" init-method="login">
<property name="bootstrapKey" value="primavera.bootstrap.home" />
<property name="bootstrapHome" value="${primavera.bootstrap.home}" />
<property name="autoLoginDatabaseName" value="${primavera.login.databaseName}" />
<property name="autoLoginUserName" value="${app.primavera.login.userid}" />
<property name="autoLoginPassword" value="${app.primavera.login.password}" />
</bean>
答案 0 :(得分:0)
听起来像春天a similar question的CronTriggerFactoryBean
的过时版本。
Quartz 2将org.quartz.CronTrigger
从类更改为接口,因此您确实需要兼容版本的CronTriggerFactoryBean
。我会检查spring-context-support.jar
文件,类路径中的.war
版本是什么。