问题描述
- 关于spring和quartz集成爆NoClassDefFoundError的问题,描述详细
-
首先报错信息严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.NoClassDefFoundError: com/gc/monitor/exception/MonitorException at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585) at java.lang.Class.getDeclaredConstructors(Class.java:1906) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:231) .. Caused by: java.lang.ClassNotFoundException: com.gc.monitor.exception.MonitorException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
上面的MonitorException是我自己定义的一个异常,路径绝对没有问题
Task类里面这样的public class MonitorScript { Logger logger = Logger.getLogger(this.getClass()); public void execute(){ System.out.println("----------monitor start----------"); try { GpsooMonitor gpsooMonitor = GpsooMonitor.getInstance(); gpsooMonitor.run(); } catch (MonitorException e) { logger.error(e.getMessage()); } System.out.println("----------monitor end----------"); } }
后来我改了一下,将MonitorException放到了getInstance里面catch住了,这时候就么有问题了。
另外,将application.xml相关信息也贴一下<!--the object need trigger--> <bean id="jobBean" class="com.gc.monitor.MonitorScript" /> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="jobBean" /> <property name="targetMethod" value="execute" /> <!--将并发设置为false--> <property name="concurrent" value="false" /> </bean> <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="jobDetail" /> <!--表达式,我的是每 30 执行一次--> <property name="cronExpression" value="0/1 * * * * ?" /> </bean> <!-- 总管理类如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" > <property name="triggers"> <list> <!--作业调度器,list下可加入其他的调度器--> <ref bean="trigger" /> </list> </property> </bean>
我怀疑是缺什么包,但是没有找到缺什么。网上说xbeans,我也加了
贴下全部maven配置请问,这是什么情况啊?
解决方案
好不可思议啊!!居然是包重名!!
解决方案二:
http://www.cnblogs.com/jamesmile/p/3871503.html
解决方案三:
java.lang.ClassNotFoundException: com.gc.monitor.exception.MonitorException
异常抛出是你 MonitorException 没有找到。
感觉应该是 MonitorException 类你部署的时候就没有发布上去,你部署完毕后。
查一下webContent/classes目录下有没这个类。
时间: 2024-12-02 18:27:28