环境搭建:java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.

今天搭建Spring Cloud 碰见了一个比较奇葩的问题:

ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
   at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:161)

20:39:20.718 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:161)
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:102)
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:68)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:338)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:297)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
	at org.example.App.main(App.java:13)

Process finished with exit code 1

    根据网上的经验得出,这个是Spring boot 的版本不兼容导致的。但还是想深究一下,这个报错的原理是什么。talk is cheap ,show me the code.

   第一步:报错的地方在  BootstrapApplicationListener.class 类的 bootstrapServiceContext 方法的161行。

    这时答案已经出来了,Spring boot 启动时无法加载Spring.application.name 因此而抛出错误。并非网上误传的Spring boot版本不兼容问题。开始在配置文件中添加Spring.application.name 参数重启,问题还是没有解决。

     回来再看重新缕下思路,抛出异常的类没有定位错误,抛出异常的行没有定位错,问题定位的没有错误,但是问题没有解决,似乎陷入了僵局。这时我们再看出错的这个类,它来源于Spring-cloud-Context 1.3.6 。这时闪过一丝疑惑,2.0.1版本的Spring boot 为什么使用了Spring-Cloud-Context 1.3.6的jar包。

    开始解决兼容性问题,原来在使用eureka 时会导入Spring Cloud相关的jar包,于是出现来Spring boot 和Spring Cloud版本不兼容的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值