qq_27377407 2015-04-13 10:06 采纳率: 100%
浏览 2391
已采纳

关于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配置

图片说明

请问,这是什么情况啊?

  • 写回答

3条回答 默认 最新

  • qq_27377407 2015-04-14 07:17
    关注

    好不可思议啊!!居然是包重名!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值