Spring boot Elasticsearch整合 遇到Guava版本的坑 java.lang.NoSuchMethodError: com.google.common.util.concurr
阿新 • • 發佈:2018-12-11
先說報錯:java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.xxxx()
報錯的意思是找不到方法,其實很大部分原因是因為jar衝突,出現找不到方法沒有jar包的情況很少的
我的原因就是jar衝突了
集成了Elasticsearch
pom.xml:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
我的springboot的版本是1.4.3,Elasticsearch引入的依賴需要的Guava版本必須在18.0以上。然後去看了下spring boot data引入的Guava版本是19.0,按道理說沒有問題的。
繼續檢視pox.xml 點選pom.xml 點選同行的選單欄Dependencies看Guava依賴的版本,結果發現了引入的15.0的Guava jar版本,然而15.0裡面是沒有提示報錯的方法的
我引入了一個RESTFUL文件生成的框架swagger-springmvc 就是它引入的15.0的Guava jar,然後註釋即可。暫時先把swagger-springmvc放一邊
註釋的pom:
或者引入它的高版本來適應Elasticsearch對應的18.0 Guava jar版本
註釋後問題解決
很多東西都會用到Guava這個。比如hadoop等。如果確定可以引入18.0以上版本,其他引入的可以註釋或者排除pom:
<dependency> <groupId>xxxxx</groupId> <artifactId>xxxx</artifactId> <version>x.x.x.</version> <exclusions> <exclusion> <artifactId>com.google.guava</artifactId> <groupId>guava</groupId> </exclusion> </exclusions> </dependency>