开发者社区> 问答> 正文

初次尝试Quartz与Spring集成启动报错!?报错

本人菜鸟一枚 初次尝试Quartz与Spring集成

我这里尝试的是业务类继承QuartzJobBean的做法。Spring 3.2.4+Quartz2.2.1。

但是不幸的是启动的时候就报错了,唉。很蛋疼。报错找不到我的任务类。报错信息在下面有。

代码如下:

要调度的业务类:


package com.bdqn.service;

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class Services extends QuartzJobBean{
		@Override
		protected void executeInternal(JobExecutionContext arg0)
				throws JobExecutionException {
			// TODO Auto-generated method stub
			System.out.println("调用任务--"+new Date());
		}
}



applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
						http://www.springframework.org/schema/tx 
						http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
           				http://www.springframework.org/schema/aop 
           				http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
           				http://www.springframework.org/schema/context 
           				http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- bean -->
	<bean id="Services" class="com.bdqn.service.Services"></bean>

	<bean id="JobDetailFactoryBean" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
			<property name="jobClass" value="Services"></property>
	</bean>
		
	 <!-- 定义触发时间 每隔2秒触发一次-->
	<bean id="CronTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
			<property name="jobDetail" ref="JobDetailFactoryBean"></property>
			<property name="cronExpression" value="0/2 * * * * ?"/>   
	</bean>
	
	<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
	<!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 -->
	<bean name="startQuertz" lazy-init="false" autowire="no"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="CronTriggerFactoryBean" />
			</list>
		</property>
	</bean>
</beans>



web.xml中也配置了。

报错信息:

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JobDetailFactoryBean' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Class' for property 'jobClass'; nested exception is java.lang.IllegalArgumentException: Cannot find class [Services]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:610)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:519)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Class' for property 'jobClass'; nested exception is java.lang.IllegalArgumentException: Cannot find class [Services]
	at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:468)
	at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:494)
	at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:488)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1433)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1392)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1128)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	... 35 more
Caused by: java.lang.IllegalArgumentException: Cannot find class [Services]
	at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:296)
	at org.springframework.beans.propertyeditors.ClassEditor.setAsText(ClassEditor.java:63)
	at org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:452)
	at org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:424)
	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:181)
	at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:448)
	... 41 more
Caused by: java.lang.ClassNotFoundException: Services
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:260)
	at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:293)
	... 46 more
2014-3-18 22:32:34 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2014-3-18 22:32:34 org.apache.catalina.core.StandardContext start
严重: Context [/Test-quartz1] startup failed due to previous errors
2014-3-18 22:32:34 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext




展开
收起
爱吃鱼的程序员 2020-06-22 11:26:55 631 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    初看了一下

    <propertyname="jobClass"  value="Services"></property>

    value应该是 com.bdqn.service.Services吧,上面那个bean定义可以去了

    你试试看,也不知道对不对

    嗯你说的对。我改成ref不用value也是可以的!TankYou!
    2020-06-22 11:27:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载