我最近自己再搭建一个springboot、springcloud、vue的项目来玩一下。在配置Swagger的时候产生了上述的错误。一个报错产生的原因有很多种,下面我总结一下自己遇到的问题以及解决办法:
爆红的配置文件如下:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();
}
}
来个截图:
遇到类似的问题(“Cannot access com.google.common.base.Predicate”),一整段报红的第一步先考虑的是是不是依赖导入不成功?是不是包冲突?是不是包引用错了?等等。如果是依赖导入不成功,那么看看是否安装了需要的插件(前提是某些依赖是通过插件引入的比如Lombok等),最直接的办法就是clean一下,重新导入一下,如果还是不成功,那么最笨的方法就是找到你依赖的本地目录文件全部删除,然后再让IDEA自动帮你下载依赖。如果还是不行,那么你再看看你的pom文件里面有没有springboot的标签,如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/>
</parent>
说白了就是springboot的版本。有的人新建maven 工程以后,都没看是否存在springboot的版本信息,难怪依赖一直导入不成功!
如果是包冲突,那就看看是不是有两个版本?或者重复引入依赖?!个人角色重复引入依赖应该不是什么大问题,不过有的时候也会莫名奇妙的出错,所以建议不要重复引入同一个依赖。
回归正题:
通过查看pom文件,我发现了问题:
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
其中:
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
意思是排除什么什么依赖,问题就出在这里了。这么低级的错误。
出现问题的原因: 之前swagger配置出了点问题,然后就百度,根本没想是什么意思,直接复制过来!