Error creating bean with name 'xxx': Injection of autowired dependencies failed

开发环境项目启动异常

问题描述

  • 开发环境服务服务 .build.sh 执行,代码编译异常
  • 日志信息如下:

Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘xxx’: Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: xxx/xxx xxx;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name ‘xxx’: Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: private xxx/xxx xxx;
nested exception is java.lang.NoClassDefFoundError: xxx/xxx

  • git pull 拉取新的项目代码后,重新执行 .build.sh 启动依然异常

问题原因

从日志信息上看jar包冲突
依赖加载失败
昨日运行正常,今日突然运行失败
原因猜测
jar 包冲突;导致某些依赖加载不到
项目中依赖了同一个项目的两个不同的版本,但加载时只加载初次加载的jar包,可能未加载的jar包中还有新增内容,导致新内容加载失败

检查是否是jar包冲突
cd data/code/project
mvn -Dverbose dependency:tree
最后写着compile的就是编译成功的。
最后写着omitted for duplicate的就是有jar包被重复依赖了,但是jar包的版本是一样的。
最后写着omitted for conflict with xxxx的,说明和别的jar包版本冲突了,而该行的jar包不会被引入。

问题解决

修改代码 pom.xml 文件,使用
<exclusions>
<exclusion>
</exclusion>
</exclusions>

Linux服务器maven仓库地址
data/maven rm -rf . 删除所有依赖

在 data/code/project 中执行 mvn clean ;mvn install 重新加载maven依赖jar包

参考资料

用dependency:tree查看maven引入jar包的传递依赖

其他问题

开发环境项目部署在同一台机器上,maven仓库的依赖冲突,同时影响了其他项目,
项目A 启动正常无报错,但项目本身对外提供的RPC接口在 dubbo-admin 控制台上提示无消费者提供

上述问题解决后,重新编译运行A项目,问题修复

猜你喜欢

转载自blog.csdn.net/mingyundezuoan/article/details/80213123