1. 程式人生 > >Spring boot Elasticsearch整合 遇到Guava版本的坑 java.lang.NoSuchMethodError: com.google.common.util.concurr

Spring boot Elasticsearch整合 遇到Guava版本的坑 java.lang.NoSuchMethodError: com.google.common.util.concurr

先說報錯: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>