springBoot2.0.3+hystrix熔断器整合 注解提示错误
最终结果报错原因是因为guava-15.0.jar的包下载错误,原因可能是我在下载过程中中断过,导致包不可用,但是也加载不到正确的包,把仓库里所有的父节点的包和自己本身多版本的号全删提再下载,一切正常,
springBoot2.0.3直接在spring-cloud-starter-netflix-hystrix 有依赖,不需要去加其它包
下面是一步步排错的路线
spring2.0.3版本 各种包的不兼容,并且把以前的集成的包给去掉了,我们自己去整合JAR包,超级麻烦, 提示是找不到相应的包 经过各种查资料,(最后才知道是包下载不完整)
解决方案:pom.xml添加依赖
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-javanica</artifactId>
<version>RELEASE</version>
</dependency>
关键包要自己引入 , 当然这不是重要的,并且这个包不能和下面这个包同时存在,否则一直打不到包,其实是包冲突,上面依赖已经引入这个了,再添加一次就冲突,之前在网上找了很久,一直都 没有发现问题,后来把所有的包全删了,再一个个的加上,这个实在是太坑爹了,搞了一上午,所以,只需要hystrix-javanica 依赖就可以了,
<!-- <dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>RELEASE</version>
</dependency> -->
下面是完整的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.hystrix</groupId>
<artifactId>hystrix</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hystrix</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-javanica</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
springBoot1.5版本和2.0以后的版本相差很大,依赖的东西都作了改动,需要自己慢慢去排查问题,没有依赖的话,自己找匹配的包引入,有的是引入包已经包含在集成的包里了,这样再引入一次可能就有问题,比如 spring-cloud-starter-netflix-eureka-client这里就已经引入了rabbon 项目无需引用,但是引用也不会错,
排查的时候,要点进去看依赖的包里包含哪些,如果有就不再引入, 包冲突和包引用问题已经折腾自己好多次了,以后排查问题也需要更加仔细,更注重方法。
启动项目后,发现报这个错误
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Lists
代码在编译的时候有时候会遇到Caused by: java.lang.ClassNotFoundException
如果在查阅完代码,发现没问题的时候,那么,有一种可能是你的此依赖包并没有下载完整。
举个场景来说,你在网络不好的时候,去编译打包,在去中央仓库拉依赖包com.google.common.*的时候,中途可能网络中断。之后,你再想重新编译打包,
但是你的本地maven库中已经有了此依赖包的不完整目录,所以便不会再重新下载此依赖包,所以你编译的时候,就会提示某个类找不到。
解决方法:
删除本地的此依赖包的目录,比如这里我删除了
/repository/com/google/guava/guava
然后重新mvn编译打包就可。