Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/context/embedded
Exception in thread “main” java.lang.NoClassDefFoundError: org/springframework/boot/context/embedded/ServletRegistrationBean
这个问题是因为:
在 org.springframework.cloud.netflix.zuul.ZuulConfiguration位置里,引用的是
org.springframework.boot.context.embedded.ServletRegistrationBean这个类,
但是,这个类只有在springboot1.3.5.RELEASE中才有:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/>
</parent>
但是,我不想引用这个落后的springboot,所以,如何保证引用指向1.5.4呢,引用的zuul类是在Netflix的1.1.0中,猜测这个版本可能与1.5.4不匹配,所以,升级到与1.5.4匹配的版本可能就能解决问题,所以,查看官网最新的是1.4.4,然后进行升级(事实上最后没有使用这个方案,可能是我的IDE的问题,升级后死活找不到jar包,具体报错是 has broken path ,最后干脆直接注释掉1.1.0的启动成功了,但是,如果注释掉,就没有了eureka的客户端发现,所以我想办法引用eureka的client包试试,后来,果然成功,zuul启动成功并成功被eureka所发现):
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
demo地址:https://github.com/yangsea/haiyang
注意:1.54的是这个: org.springframework.boot.web.servlet.ServletRegistrationBean;