记一次Eureka启动报Failed to start bean 'eurekaAutoServiceRegistration' 。。。错误
在一次项目迁移的过程中,新导入了两个依赖,结果项目启动就报错,如下:

主要原因是:Failed to start bean 'eurekaAutoServiceRegistration'; nested exception is java.lang.NullPointerException,我的理解是初始化失败了,这种涉及到框架的错误一出现,一开始确实没有头绪,也参考了网上的资料,主要如下:
- 有把原因归咎于引入了fastjson导致的,项目中确实是引入了fastjson,但是将其依赖去除之后依然报错,所以这个方法对我无效;
- 也有说是未引入Jackson或者版本不对,但是这很模糊,是什么版本不对?并没有说清楚;
其实这里问题的出现是由于我新引入的了两个依赖导致的,这是排查问题的源头,我们排查问题时不能没有思路,要顺藤摸瓜,追根溯源,一步一步来定位问题。我引入的依赖如下:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.2.1</version>
</dependency>
这是两个httpcompoents包,是由于项目中需要发起https请求引入的,怎么引入这个依赖就会导致冲突呢?
maven依赖规则里面有两条分别是:
- 声明优先原则,在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。 所以,先声明自己要用的版本的jar包即可;
- 路径近者优先,直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,即可解决冲突;
其中从第二条,我的理解是以路径最近的为准,这里路径最近的就是我新引入的这两个依赖,那是否是eureka也有依赖httpcomponents,但是根据路径近者优先原则,eureka启动时主动依赖新的这两个包,但是这两个包版本可能和eureka不兼容,从而启动失败?好,那就来验证一下:
看项目依赖我平时常用的是直接把项目的依赖树打出来,直接看,这样比较全面。Windows 10 系统下进入cmd命令窗口,在项目根目录下输入如下指令(电脑上需安装了maven):
mvn dependency:tree
打印出来的依赖树如下(截取了部分):

看到了吗,eureka确实引入了httpcomponents两个包,而且版本号高于我自己引入的,应该是版本号不兼容导致启动报错,所以我把自己引入的两个包版本号改了一下,结果确实成功启动了。
到这里问题已经解决了,特此记录一下
参考文献:
Failed to start bean 'eurekaAutoServiceRegistration'
Can't use @EnableEurekaClient to register config server with Eureka
记一次Eureka启动报Failed to start bean 'eurekaAutoServiceRegistration' 。。。错误的更多相关文章
- spring Boot启动报错Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.getAnnotationAttributes
spring boot 启动报错如下 org.springframework.context.ApplicationContextException: Unable to start web serv ...
- Intellij IDEA中Springboot启动报Command line is too long错误
启动报错:Error running 'CmsFrontApplication': Command line is too long. Shorten command line for CmsFron ...
- Spring-boot2.0.1.BUILD-SNAPSHOT整合Elasticsearch报failed to load elasticsearch nodes错误解决办法
spring-boot整合es的application.properties的默认配置为: spring.data.elasticsearch.cluster-nodes=localhost:9200 ...
- 记一次Tomcat启动报错Failed to start component [StandardEngine[Catalina].Standard
今天启动项目的时候,发现tomcat一直报错,之前都一直没有问题的啊,提示 org.apache.catalina.LifecycleException: Failed to start ...
- Eureka启动报错:Failed to load property source from location 'classpath:/application.yml'
原因: 将application.yml添加到classpath时, 由于变更了application.yml的编码格式(或许也改变了些代码内容), 而target内的yml文件没有实时更新, 从而导 ...
- 记一次sshd启动报错,Failed to start OpenSSH server daemon.
sshd -t [root@mysql5-slave proj]# sshd -t @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- Spring Cloud和eureka启动报错 解决版本依赖关系
导读 An attempt was made to call a method that does not exist. The attempt was made from the following ...
- eclupse启动报 Failed to load JavaHL Library.错
解决办法: window --> preferences --> Team --> SVN --> Client选项选择: SVNKit x.x.x.xxx
- 关于oracle数据库启动报ORA-01122,ORA-01110,ORA-01203错误的解决方法
ORACLE 数据库空间裸设备出问题了,启动oracle失败,解决方法问题现象: 启动ORACLE的时候报如下的错误: Database mounted. ORA-01 ...
随机推荐
- datatable中的copy和clone的用法区分
dt.copy();//复制结构和数据 dt.clone();//仅复制结构,不复制数据
- [Linux] 使用Yum在CentOS上安装MySQL
跟随官网上的安装教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html官网上还有一个QuickGuide ...
- HDU-1423 最长公共上升子序列(LCIS)
问题描述: 给定两个字符串x, y, 求它们公共子序列s, 满足si < sj ( 0 <= i < j < |s|).要求S的长度是所有条件序列中长度最长的. 做过最长公共子 ...
- CVE-2018-20129:DedeCMS V5.7 SP2前台文件上传漏洞
一.漏洞摘要 漏洞名称: DedeCMS V5.7 SP2前台文件上传漏洞上报日期: 2018-12-11漏洞发现者: 陈灿华产品首页: http://www.dedecms.com/软件链接: ht ...
- BUAA_OO Summary——多项式求导问题
从C.DS.计组一路折磨过来, 几乎都在采用过程化.函数式的编程思想.初接触面向对象的项目开发,经过了三周的对多项式求导问题的迭代开发,经历了设计.coding.测评环节,算是对面向对象有了一定的认识 ...
- Swift与C++混编 OpenCV初体验 图片打码~
OpenCV初体验,给图片打码 提到OpenCV,相信大多数人都听说过,应用领域非常广泛,使用C++开发,天生具有跨平台的优势,我们学习一次,就可以在各个平台使用,这个还是很具有诱惑力的.本文主要记录 ...
- iptables实现--kafka限制ip地址访问
iptables -I INPUT -p tcp --dport 9092:9094 -j DROPiptables -I INPUT -s 10.144.137.32 -p tcp --dport ...
- 请输入一个大于7的整数,输出小于k并且至少满足下面2个条件中的1个条件的所有正整数
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 22:06 * @description ...
- 关于Java 去除空格,换行的代码
public static String replaceBlank(String str) { String dest = ""; if (str != null) { //Pat ...
- qt5.4解决输出中文乱码问题
需要在字符串前添加 QString::fromUtf8 例: b2 = new QPushButton(this); b2->setText(QString::fromUtf8("变化 ...