在一次项目迁移的过程中,新导入了两个依赖,结果项目启动就报错,如下:

  主要原因是:Failed to start bean 'eurekaAutoServiceRegistration'; nested exception is java.lang.NullPointerException,我的理解是初始化失败了,这种涉及到框架的错误一出现,一开始确实没有头绪,也参考了网上的资料,主要如下:

  1. 有把原因归咎于引入了fastjson导致的,项目中确实是引入了fastjson,但是将其依赖去除之后依然报错,所以这个方法对我无效;
  2. 也有说是未引入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' 。。。错误的更多相关文章

  1. 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 ...

  2. Intellij IDEA中Springboot启动报Command line is too long错误

    启动报错:Error running 'CmsFrontApplication': Command line is too long. Shorten command line for CmsFron ...

  3. Spring-boot2.0.1.BUILD-SNAPSHOT整合Elasticsearch报failed to load elasticsearch nodes错误解决办法

    spring-boot整合es的application.properties的默认配置为: spring.data.elasticsearch.cluster-nodes=localhost:9200 ...

  4. 记一次Tomcat启动报错Failed to start component [StandardEngine[Catalina].Standard

    今天启动项目的时候,发现tomcat一直报错,之前都一直没有问题的啊,提示       org.apache.catalina.LifecycleException: Failed to start ...

  5. Eureka启动报错:Failed to load property source from location 'classpath:/application.yml'

    原因: 将application.yml添加到classpath时, 由于变更了application.yml的编码格式(或许也改变了些代码内容), 而target内的yml文件没有实时更新, 从而导 ...

  6. 记一次sshd启动报错,Failed to start OpenSSH server daemon.

    sshd -t [root@mysql5-slave proj]# sshd -t @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  7. Spring Cloud和eureka启动报错 解决版本依赖关系

    导读 An attempt was made to call a method that does not exist. The attempt was made from the following ...

  8. eclupse启动报 Failed to load JavaHL Library.错

    解决办法: window --> preferences --> Team --> SVN --> Client选项选择: SVNKit x.x.x.xxx

  9. 关于oracle数据库启动报ORA-01122,ORA-01110,ORA-01203错误的解决方法

    ORACLE 数据库空间裸设备出问题了,启动oracle失败,解决方法问题现象:     启动ORACLE的时候报如下的错误:        Database mounted.      ORA-01 ...

随机推荐

  1. MySql由于编码问题,存储过程执行出错。

    在存储过程后面加了一段话.红色部分 DELIMITER $$ USE `mysql_wispeed01-test1`$$ DROP PROCEDURE IF EXISTS `sp_crebillno` ...

  2. 3dmax 3dmax计算机要求 3dmax下载

    渲染首先是要X64兼容台式电脑,笔记本不行,笔记本就是学生拿来玩还行,渲染大图笔记本真的是发热. 配置一般的电脑和笔记本千万不要尝试安装3dmax2019了,很卡的,3dmax2019只有64位,没有 ...

  3. 使用SQL-Front启动MySQL8.0报错

    这学期学习数据库,电脑上分别装有phpStudy(自带的MySQL版本为5.5)和MySQL8.0.11,于是想用phpStudy中的SQL Front连接到8.0的数据库.手动开启8.0的MySQL ...

  4. matplotlia应用

    一.简单使用 使用函数 plt.polt(x,y,label,color,width) 根据x,y 数组 绘制直,曲线 import numpy as np #引用numpy库,从新命名它为np(以后 ...

  5. [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)

    Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...

  6. TypeError: a bytes-like object is required, not 'str'

    python bytes和str两种类型转换的函数encode(),decode() str通过encode()方法可以编码为指定的bytes 反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数 ...

  7. mysql学习2

    1.视图 视图是一个虚拟表(非真实存在),其本质是[根据sql语句获取动态的数据集,并为其命名],用户使用时只需要使用[名称]即可获取结果集,并可以将其当作表来使用. 搜索临时表 SELECT * F ...

  8. CSS content换行实现字符点点点loading效果

    CSS代码如下: dot { display: inline-block; height: 1em; line-height: 1; text-align: left; vertical-align: ...

  9. Centos服务器上NFS灾备环境及KVM的搭建及使用

    1.概述 由于在单台服务器上搭建灾备环境需要KVM和NFS的支持,下面先列出KVM的搭建流程,再列出使用NFS实现单台服务器灾备的流程. A.搭建KVM环境 1>.主机环境准备 Linux Sy ...

  10. ASP.NET MVC 网页应用 action 传递的Model

    视图界面 @using {引用模型} @model {具体模型} <html> @Model.{具体模型的属性} </html> 注意区分Model的大小写 引入时,使用@mo ...