es jar包冲突问题

来源:互联网 发布:好医生app软件 编辑:程序博客网 时间:2024/05/18 17:26

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>