2014-10-01 66 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 

不能從靜態的一些初始化集合加載