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

关于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条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 请问第13题到底应该怎么做
      • ¥15 stable diffusion报错问题
      • ¥20 数据可视化综合运用 导入npz文件以及读取内容
      • ¥15 倒计时汇编语言RTC实时时钟
      • ¥15 CCS安装出现Failed to create the part's controls
      • ¥15 请问有digital Fortran编译器吗
      • ¥15 用cst怎么仿真同轴馈线
      • ¥15 如何在lammps中添加气液边界条件?
      • ¥20 具有每日记账功能的简易日历程序
      • ¥15 关于wx.updateShareMenu这个函数