2014-10-01 64 views
0

尝试使用带有嵌入式elasticsearch的java创建索引时,获取NoClassDefFoundError。Elasticsearch NoClassDefFoundError for PostingFormats

  • 版本的Java 1.7和1.3.2 Elasticsearch
  • 建设与Maven Assembly插件
  • 用一个罐子,其中包括所有的依赖

这是堆栈跟踪的片段运行: -

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.index.codec.postingsformat.PostingFormats 
at org.elasticsearch.index.codec.CodecModule.configurePostingsFormats(CodecModule.java:126) 
  • 本组包含在i n用于弹性搜索的依赖项jar
  • 当在类路径而不是jar上运行分解类时,不要发生此错误。
  • 清除了所有以前的快照和类等,以避免任何lib冲突。

这是什么做的elastisearch.jar中的META-INF/services文件夹,需要使用Maven遮阳帘插件

回答

0

因此,有包含该元内的许多文件INF /各种lucene和elasticsearch罐子的服务。其中一些文件具有相同的文件名,例如

org.apache.lucene.codecs.PostingsFormat 

Maven的遮阳帘插件由条目合并成一个文件解决了这个问题。实际的例外是IllegalArgEx,作为

org.apache.lucene.codecs.memory.DirectPostingsFormat 

不能从静态的一些初始化集合加载