📕 Language/Java

[Java] Cannot find class [org.springframework.scheduling.quartz.SimpleTriggerBean] for bean with name 'simpleTrigger' defined in ServletContext resource

a n u e 2022. 2. 9. 10:09

Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.scheduling.quartz.SimpleTriggerBean] for bean with name 'simpleTrigger' defined in ServletContext resource [/WEB-INF/config/dream/quartz_config.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.SimpleTriggerBean
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1397)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:638)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:607)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1496)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:425)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:403)
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:206)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1263)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1097)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
... 63 more
Caused by: java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.SimpleTriggerBean
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:251)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408)
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1444)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1389)
... 74 more

 

 <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
	 <property name="jobDetail"><ref bean="quartzTestServiceMethod"/></property>
	 <property name="startDelay"><value>10000</value></property>
	 <property name="repeatInterval"><value>40000</value></property>
</bean>

Quartz 실행 시, simpleTrigger bean을 못찾아서 발생하는 문제

SimpleTriggerBean을 SimpleTriggerFactoryBean으로 변경 (spring버전 문제라고 하는데..)

참고 url : https://stackoverflow.com/questions/30520265/migrating-from-spring-3-to-spring-4-org-springframework-scheduling-quartz-cron#

 <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
	 <property name="jobDetail"><ref bean="quartzTestServiceMethod"/></property>
	 <property name="startDelay"><value>10000</value></property>
	 <property name="repeatInterval"><value>40000</value></property>
</bean>

이렇게 변경하면 정상적으로 작동한다.

마찬가지로 CronTriggerBean도 CronTriggerFactoryBean으로 변경하여야 정상 작동함