读书人

关于spring的quratz任务调度有关问题

发布时间: 2011-11-30 21:16:57 作者: rapoo

关于spring的quratz任务调度问题
调用的方法
package test;
public class TestQuarz {
public void sayHello() {
System.out.println( "-----------chulai... ");
}
}

测试的类
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext a = new FileSystemXmlApplicationContext(
"WebContent\\WEB-INF\\applicationContext.xml ");
}
}

spring文件配置
<?xml version= "1.0 " encoding= "UTF-8 "?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN " "http://www.springframework.org/dtd/spring-beans.dtd ">
<beans>
<bean id= "testQuarz " class= "test.TestQuarz " />
<bean id= "helloworldTask "
class= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean ">
<property name= "targetObject ">
<ref bean= "testQuarz " />
</property>
<property name= "targetMethod ">
<value> sayHello </value>
</property>
</bean>
<bean id= "simpleTrigger "
class= "org.springframework.scheduling.quartz.SimpleTriggerBean ">
<property name= "jobDetail " ref= "helloworldTask " />
<property name= "startDelay " value= "1000 " />
</bean>
<bean
class= "org.springframework.scheduling.quartz.SchedulerFactoryBean ">
<property name= "triggers ">
<list>
<ref bean= "simpleTrigger " />
</list>
</property>
</bean>
</beans>

我运行test类的时候报这个异常
是怎么回事
帮帮忙
谢谢
2007-8-20 22:16:03 org.springframework.core.CollectionFactory <clinit>
信息: JDK 1.4+ collections available
2007-8-20 22:16:04 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from file [C:\Documents and Settings\Andy\workspace\dafasd\WebContent\WEB-INF\applicationContext.xml]
2007-8-20 22:16:04 org.springframework.context.support.AbstractRefreshableApplicationContext refreshBeanFactory
信息: Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=21402567]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [testQuarz,helloworldTask,simpleTrigger,org.springframework.scheduling.quartz.SchedulerFactoryBean]; root of BeanFactory hierarchy
2007-8-20 22:16:04 org.springframework.context.support.AbstractApplicationContext refresh
信息: 4 beans defined in application context [org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=21402567]
2007-8-20 22:16:04 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons


信息: Destroying singletons in {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [testQuarz,helloworldTask,simpleTrigger,org.springframework.scheduling.quartz.SchedulerFactoryBean]; root of BeanFactory hierarchy}
Exception in thread "main " org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quartz.SimpleTriggerBean] for bean with name 'simpleTrigger ' defined in file [C:\Documents and Settings\Andy\workspace\dafasd\WebContent\WEB-INF\applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/quartz/SimpleTrigger
Caused by: java.lang.NoClassDefFoundError: org/quartz/SimpleTrigger
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:177)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:313)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:912)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:165)
at org.springframework.context.support.AbstractApplicationContext.getBeanNamesForType(AbstractApplicationContext.java:687)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:397)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:330)
at org.springframework.context.support.FileSystemXmlApplicationContext. <init> (FileSystemXmlApplicationContext.java:89)
at org.springframework.context.support.FileSystemXmlApplicationContext. <init> (FileSystemXmlApplicationContext.java:74)
at org.springframework.context.support.FileSystemXmlApplicationContext. <init> (FileSystemXmlApplicationContext.java:65)
at test.Test.main(Test.java:12)


[解决办法]
要改两个地方:
1、要把quartz的类包加到classpath中,在spring的安装目录下的lib\quartz\下就有
2、applicationContext.xml文件中增加
<property name= "repeatInterval ">
<value> 1000 </value>
</property>

完整的applicationContext.xml文件如下:
<?xml version= "1.0 " encoding= "UTF-8 "?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN " "http://www.springframework.org/dtd/spring-beans.dtd ">
<beans>
<bean id= "testQuarz " class= "test.TestQuarz " />
<bean id= "helloworldTask " class= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean ">


<property name= "targetObject ">
<ref bean= "testQuarz " />
</property>
<property name= "targetMethod ">
<value> sayHello </value>
</property>
</bean>
<bean id= "simpleTrigger " class= "org.springframework.scheduling.quartz.SimpleTriggerBean ">
<property name= "jobDetail " ref= "helloworldTask " />
<property name= "startDelay " value= "1000 " />
<property name= "repeatInterval ">
<value> 1000 </value>
</property>
</bean>
<bean class= "org.springframework.scheduling.quartz.SchedulerFactoryBean ">
<property name= "triggers ">
<list>
<ref bean= "simpleTrigger " />
</list>
</property>
</bean>
</beans>

读书人网 >Java Web开发

热点推荐