啟動zuul服務報錯:java.lang.NoClassDefFoundError: com/netflix/zuul/ZuulFilter
由于剛開始研究zuul元件,是以也不知道這個過濾器是屬于哪個jar包,雖然知道可能是少了包含這個過濾器的jar包導緻的項目啟動出錯,但是還是研究了一會才解決。
我們使用spring cloud zuul元件的時候,一般需要在引入Eureka的jar包下,還需引入zuul元件的jar包,如下:
<!-- 引入eureka 用戶端依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- 引入Zuul 依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>-->
然後編寫zuul的配置和Eureka的配置:
zuul:
routes:
api-a:
path: /api-a/**
serviceId: emos-user-center
zuul.PreRequestLogFilter.pre.disable: true
eureka:
client:
service-url:
defaultZone: http://user:[email protected]:8020/eureka
然後在啟動類上添加注解:
@EnableZuulProxy
@SpringCloudApplication
最後啟動項目,發現報以上錯誤,這就是因為包含過濾器的包沒有引入
引入如下jar包再啟動就可以了:
<dependency>
<groupId>com.netflix.zuul</groupId>
<artifactId>zuul-core</artifactId>
<version>1.3.0</version>
</dependency>
EMOS-SCHEDULE-CENTER | n/a (1) | (1) | UP (1) - DESKTOP-53NTMC1:emos-schedule-center:8030 |
EMOS-USER-CENTER | n/a (1) | (1) | UP (1) - emos-user-center:8010 |
可以看到zuul的服務也被注冊到注冊中心了