spring SchedulerFactoryBean 没有建立 Scheduler的实现类bea

我遇到 一个棘手的问题 :java

两台服务器,JDK环境都是 1.7.79,都是采用jetty发布,项目中都采用了spring的quartz FactoryBean ,生成Scheduler,结果在内网的那台服务器上可以正常发布,一转到阿里的服务器环境,就出现了异常以下:ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduleJobInit': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.quartz.Scheduler.getTrigger(Lorg/quartz/TriggerKey;)Lorg/quartz/Trigger; web

 

按照spring容器初始化的机制 ,是不可能出现注入的Bean为空的,除非那个Bean在建立时已经出现了问题。若出现了问题 则不会在这个位置抛出异常了,而是在建立那个须要注入的bean时就已经出现异常了。spring

 

刚刚终于找到缘由了,主缘由是由于包冲突了 quartz-2.2.1.jar和quartz-1.5.1.jar两个包都在lib下。虽然我在开发环境中已经在pom.xml中删除了1.5的dependence配置,可是在jenkins的workspace中仍然还有这个jar,因此在打包的时候打进去了。  看来有时候jenkins中使用mvn同时执行clean 和packeage命令也不必定靠谱吧。得去手动清理掉workspace下的target文件夹内容,才是最安全的。安全

 

就是包冲突问题。那么为何Spring没有抛出异常呢。稍后抽时间再对org.springframework.scheduling配置了日志输出看目的地吧,到目前为止就已经将上面的问题解决了。多个quartz包。服务器

乱了乱了~~~~spa

相关文章
相关标签/搜索