天天看点

es jar包冲突问题

es本身依赖了许多其他第三方包,在使用es-java api时,如果引用不当会造成jar包冲突无法使用。

1、默认情况下, 使用es-java api,主需要引入如下的maven信息即可:

<dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>2.3.2</version>
    </dependency>      

2、java.lang.NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concu‌rrent/Executor

这种错误是由于guava版本冲突导致,在es-2.3.2版本中使用的是guava1.8版本,如果项目中其他jar引用的是其他版本guava,会造成冲突,解决方案是加上如下依赖:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>      

3、Exception in thread "main" java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

这种错误是由于jackson版本冲突导致,在es-2.3.2版本中使用的是jackson2.6.2,如果项目中其他jar引用的其他版本jackson,会造成冲突,解决方案加上如下依赖:

<dependency>  
     <groupId>com.fasterxml.jackson.core</groupId>  
     <artifactId>jackson-core</artifactId>  
     <version>2.6.2</version>  
 </dependency>