elastic-job开源框架使用中遇到的 架包冲突错误

最近在运行部门一个新的框架。该框架是用maven管理jar包的聚合工程。


在进行运行elastic-job相关的一个子项目时,报了如下的错误。

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.dangdang.ddframe.job.
spring.schedule.SpringJobScheduler#0': Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: Impleme
nting class
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455
)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
	at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:105)
	at com.asiainfo.cboss.biz.esjob.JobLauncher.main(JobLauncherhttp://blog.csdn.net/guanglihuan/article/details/50512855.java:29)



由错误信息可以知道,错误由类com.dangdang.ddframe.job.spring.schedule.SpringJobScheduler引起。

并且错误指出了exception is java.lang.IncompatibleClassChangeError,这个错误是由于不兼容引起的。网上查找这个错误,多由于jar的冲突,或者版本不对引起。


因为是开源框架,很容易调试找到该框架报错的点在SpringJobScheduler的父类JobScheduler中的如下语句。

 JobDetail jobDetail = JobBuilder.newJob(LiteJob.class).withIdentity(jobExecutor.getJobName()).build();
在JobBuilder.newJob() 这个函数调用中引起了错误。JobBuilder这个类是quartz   jar包中的类。所以初步判断是这个jar包冲突引起的。

寻找到这个jar包后,发现maven本地库引用了2.2.1和1.6.3版本。但是1.6.3版本在本地的pom文件中不存在,后发现是在该子项目依赖的另一个子项目的pom文件中引入了这个jar包。

解决方法:

暂时删去了pom文件中低版本的quartz 包。没有冲突错误出现。


这个链接中,介绍了使用maven命令,查看依赖树。可以快速定位jar包在那些项目pom文件中。

http://blog.csdn.net/guanglihuan/article/details/50512855


你可能感兴趣的:(elastic-job开源框架使用中遇到的 架包冲突错误)