引入swagger項目無法正常啟動--微服務(wù)環(huán)境下

1.問題描述:

? ? ? 使用alibaba微服務(wù)體系搭建的項目,模塊管理使用的maven,給項目引入swagger做接口文檔,啟動時報錯,報錯信息如下:

An?attempt?was?made?to?call?a?method?that?does?not?exist. The?attempt?was?made?from?the?following?location:????springfox.documentation.schema.DefaultModelDependencyProvider.dependentModels(DefaultModelDependencyProvider.java:79)

The?following?method?did?not?exist:????com.google.common.collect.FluentIterable.concat(Ljava/lang/Iterable;Ljava/lang/Iterable;)Lcom/google/common/collect/FluentIterable;The?method's?class,?com.google.common.collect.FluentIterable,?is?available?from?the?following?locations:????jar:file:/C:/maven/repository/com/google/guava/guava/19.0/guava-19.0.jar!/com/google/common/collect/FluentIterable.classIt?was?loaded?from?the?following?location:????file:/C:/maven/repository/com/google/guava/guava/19.0/guava-19.0.jar

2.問題解決

升級guava版本為20.0以上。

<dependency>

? ? ? <groupId>com.google.guava</groupId>

? ? ? <artifactId>guava</artifactId>

? ? ? <version>20.0</version>

</dependency>

3.問題排查思路

首先,查看錯誤日志,錯誤日志中英文的大體翻譯為,“嘗試調(diào)用了一個不存在方法,發(fā)生的位置在?DefaultModelDependencyProvider類中,下面這個方法不存在,可能方法存在....,guava-19.0.jar包中"

然后從錯誤日志中我們就可以分析出,由于guava-19.0這個jar引起的,并且報出的錯誤是某個方法不存在,那么我們就可以考慮到是這個jar的版本太低了,但是和swagger有什么關(guān)系那?那這個時候我們可以想到swagger有沒有使用guava,打開編譯器,查看swagger的包依賴關(guān)系:

使用idea的可以這樣操作,右側(cè)---》maven--->選中需要分析依賴的項目---》maven最上方有個show depenceies--->然后打開下面這張圖--》左上角有個有 show conflicts--》紅線就是有沖突的依賴--》放大就會發(fā)現(xiàn)如第二張圖 swagger也依賴了guava,并且要求20.0的版本。

4.根本原因

maven的父子模塊包依賴機制導(dǎo)致,父子項目依賴關(guān)系如下:

Maven 父子POM文件 相同依賴不同版本的問題 :默認(rèn)用父一級的版本而且子POM文件的版本處會有黃色Warn,但是子項目增加<version>以后,就會使用子項目的版本。

我們的項目就是在 父項目中引入的swagger,里面的swagger自己引入了20.0以上版本的guava使用,但是我們在子項目中又添加了如下依賴:

<dependency>

? ? ?<groupId>com.google.guava</groupId>

? ? ? <artifactId>guava</artifactId>

? ? ? <version>19.0</version>

</dependency>

導(dǎo)致父項目的guava版本被覆蓋成了19.0的低版本,所以無法找到swagger使用的某個方法了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容