在弹性搜索上安装我的插件时杰克逊jar地狱

时间:2018-05-27 11:54:17

标签: java maven elasticsearch

我正在为Elasticsearch编写一个自定义插件,这个插件依赖于Jackson库。当我在Elasticsearch上安装插件时,出现了这个错误:

  

线程中的异常" main" java.lang.IllegalStateException:由于jar地狱而无法加载插件AdapterPlugin   引起:java.lang.IllegalStateException:jar地狱!   class:com.fasterxml.jackson.core.Base64Variant   jar1:C:\ elasticsearch-6.2.4 \ lib \ jackson-core-2.8.10.jar   jar2:C:\ elasticsearch-6.2.4 \ plugins.installing-4501343069579282727 \ jackson-core-2.8.10.jar           在org.elasticsearch.bootstrap.JarHell.checkClass(JarHell.java:275)           在org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:192)           在org.elasticsearch.plugins.PluginsService.checkBundleJarHell(PluginsService.java:473)           ......还有12个

我该如何解决这个问题?如你所见,我试图将我的杰克逊版本从最新版本更改为2.8.10(弹性6.2.4使用它),但这确实有帮助。

我正在使用maven,这是我用于我的cuatom插件的pox.xml文件:

<dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>6.2.4</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.10</version>
    </dependency>


</dependencies>

1 个答案:

答案 0 :(得分:0)

如何在类路径中包含依赖项? Maven的?摇篮?需要更多信息。如果你使用Maven,你可以在添加Elasticsearch时使用排除,并自己包含jackson lib:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>6.2.4</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>