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版本排除掉

    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-quartz</artifactId>
        <version>${shiro.version}</version>
        <exclusions>
          <exclusion>
             <groupId>org.opensymphony.quartz</groupId>
             <artifactId>quartz</artifactId>
          </exclusion>
       </exclusions>
    </dependency>
      
    <!-- quartz -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.0</version>
    </dependency>

第二步:修改sessionValidationScheduler的类为ExecutorServiceSessionValidationScheduler

spring-shiro.xml

<bean id="sessionValidationScheduler"
class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">
    <property name="interval" value="1800000" />
    <property name="sessionManager" ref="sessionManager" />
</bean>

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

…………

发布了52 篇原创文章 · 获赞 37 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u014374009/article/details/97638636
今日推荐