浏览 686 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-02-22 关键字: spring
我在Spring中集成 quartz 进行单元测试时出现了:java.lang.NoClassDefFoundError,完整的错误堆栈信息如下:
引用 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.scheduling.quartz.SchedulerFactoryBean' defined in ServletContext resource [/applicationContext-quartz.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/quartz/spi/JobFactory Caused by: java.lang.NoClassDefFoundError: org/quartz/spi/JobFactory at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) at java.lang.Class.getConstructor0(Class.java:2699) at java.lang.Class.getDeclaredConstructor(Class.java:1985) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:54) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:759) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:724) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:387) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at cn.edu.ccnu.inc.test.QuartzTest.setUp(QuartzTest.java:43) at junit.framework.TestCase.runBare(TestCase.java:125) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 我的配置文件如下:
<bean id="sendNewsJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="cn.edu.ccnu.inc.quartz.SendNewsJob" />
<property name="jobDataAsMap">
<map>
<entry key="newsService" value-ref="newsService" />
<entry key="userService" value-ref="appUserService" />
<entry key="mailEngine" value-ref="mailEngine" />
<entry key="limit" value="10" /> <!-- News list size -->
<entry key="from" value="${mail.from.default}" /> <!-- Define where is the mail send from -->
<entry key="subject" value="${mail.subject.netcomNews}" /> <!-- Subject of the news inform mail -->
</map>
</property>
</bean>
<bean id="sendNewsCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="sendNewsJobDetail" />
<property name="cronExpression" value="0/5 0 0 ? * 2 *" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="sendNewsCronTrigger" />
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.threadCount">5</prop>
</props>
</property>
</bean>
相关的测试类如下:
public class QuartzTest extends TestCase {
private XmlWebApplicationContext ctx;
public void setUp() {
String[] paths = {"applicationContext-resource.xml",
"applicationContext-dao.xml",
"applicationContext-service.xml",
"applicationContext-email.xml",
"applicationContext-quartz.xml"};
ctx = new XmlWebApplicationContext();
ctx.setConfigLocations(paths);
ctx.setServletContext(new MockServletContext(""));
ctx.refresh();
}
public void tearDown() {
ctx = null;
}
public void testQuartz() throws Exception {
System.in.read();
}
}
请教各位这是由于什么原因造成的,我在网上搜索了一下,实际的代码其它上和大家的都差不多,但就是出错,难道 quartz 不支持单元测试? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-02-22
lib包
|
|
| 返回顶楼 | |
|
最后更新时间:2008-02-22
我应用中已经有 quartz.jar 包了啊,请问运行 quartz 调度还需要其它什么和 quartz 相关的特殊包吗?
org/quartz/spi/JobFactory 在哪个 jar 包中? |
|
| 返回顶楼 | |
|
最后更新时间:2008-02-29
原来是版本问题:(
还搞这么久 |
|
| 返回顶楼 | |




