天天看點

java.lang.NoClassDefFoundError: com/netflix/zuul/ZuulFilter

啟動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的服務也被注冊到注冊中心了

繼續閱讀