您的位置:首页 > 其它

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

2017-01-18 14:10 302 查看
最近在运行部门一个新的框架。该框架是用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.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  maven jar包冲突