quartz集成到SSM框架中遇到的问题总结,java.lang.NoSuchMethodError: org.quartz.Scheduler.triggerJob(Lorg/quartz/JobK

quartz集成到SSM框架中遇到的问题总结

主要包含以下几点:

java.lang.NoSuchMethodError:org.springframework.scheduling.quartz.SchedulerFactoryBean.getScheduler()Lorg/quartz/Scheduler;

java.lang.NoSuchMethodError: org.quartz.Scheduler.triggerJob(Lorg/quartz/JobKey;)V

org.quartz.JobPersistenceException: The job (mytest.test) referenced by the trigger does not exist.

1、对于第一个问题,只要引入了quartz相关的jar包依赖,启动依然存在问题,就很可能是jar包冲突问题,比如项目中使用了shrio框架,这个框架就自带了低版本的quartz。

解决办法:
第一步:解决版本冲突问题

pom.xml中把shiro默认使用的quartz 1.6.1版本排除掉

    
        org.apache.shiro
        shiro-quartz
        ${shiro.version}
        
          
             org.opensymphony.quartz
             quartz
          
       
    
      
    
    
        org.quartz-scheduler
        quartz
        2.2.0
    

第二步:修改sessionValidationScheduler的类为ExecutorServiceSessionValidationScheduler

spring-shiro.xml


    
    

2、对于第二个问题,很可能是spring-context-support问题,一般现在来说,spring 4.x 和 quartz 2.x 进行配置。

解决方法:
先检查一下有无多个版本的spring-context-support,去掉重复和较低版本的依赖。
其次,就是quartz 2.2版本以后不需要 spring-context-support 依赖,直接去掉相关的依赖可以了。

对于上面存在的问题,要善于分析问题,首先找到问题最重要,尤其是项目启动时候的日志信息,非常重要,从日志信息就可以大致分析出问题。

3、对于第三个问题,如果添加了相关的依赖jar包,很可能是 Scheduler 为空导致的,如果是配置文件的方式注入,注意get 和set 方法,如果用到 new Class,注意声明Scheduler为静态变量。


最后总结,对 quartz 进行了封装,打为jar包,使用起来更简单。

使用地址:https://github.com/YouAreOnlyOne/FastFrameJar/tree/master/Quartz

…………

你可能感兴趣的:(日常错误,quartz,job,ssm,shrio,冲突)