我最近自己再搭建一個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配置出了點問題,然後就百度,根本沒想是什麼意思,直接複製過來!