最近碰到问题 :web项目引用biz项目 ,启动时报错如下
Cannot find class [com.aa.service.inf.kms.client.DataSource] for bean with name 'DataSource' defined in URL [jar:file:/Users/aa/eclipse-workspace-new/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/A/WEB-INF/lib/B-1.0-SNAPSHOT.jar!/conf/spring/context.xml]; nested exception is java.lang.ClassNotFoundException: com.aa.service.inf.kms.client.DataSource
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1391) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
分析可能性有以下几中:
1、biz项目中的pom是不是有引入这个包,web项目的lib文件夹下边是否能下载下来这个包(java-client-0.7.6)
2、是否之前已经引入过包(java-client-0.6.1)和当前biz引入的包(java-client-0.7.6)产生版本冲突eclipse中解决方案
(1)直接使用maven命令:
dependency:tree -Dverbose
(2)直接搜索:
3、父项目用effective pom模式查看发现包(java-client-0.6.1)的版本(如下图)和当前biz引入版本(java-client-0.7.6)不一致,至于为什么父项目出现java-client-0.6.1这个版本我目前也没搞明白
解决方案为直接在父项目中引入版本(java-client-0.7.6)覆盖之前的版本(java-client-0.6.1)然后再在子项目biz中引用改版本(java-client-0.7.6)具体配置如下:
父项目中引用代码:
<dependency>
<groupId>com.aa.service.inf</groupId>
<artifactId>java-client</artifactId>
<version>0.6.7</version>
</dependency>
子项目中引用代码:版本号默认继承父项目版本0.6.7
<dependency>
<groupId>com.meituan.service.inf</groupId>
<artifactId>kms-java-client</artifactId>
</dependency>
4、web项目引入biz项目的时候,biz项目是否将该包排除在外(我犯的脑残问题就是这个)排查错误方式为:直接看web项目的lib下边能不能下载到java-client-0.6.7的包
<dependency>
<groupId>com.aa.finance.ebs</groupId>
<artifactId>biz</artifactId>
<exclusions>
<exclusion>
<groupId>com.aa.service.inf</groupId>
<artifactId>java-client</artifactId>
</exclusion>
</exclusions>
</dependency>