2015-03-06 4 views
0

Я написал плагин tokenizer сам и скомпилирую его с помощью maven. И elasticsearch работает хорошо после его установки. Но когда я пытаюсь использовать его для сегментных предложений, я получаю сообщение об ошибке ниже:Elasticsearch: NoClassDefFoundError после установленного плагина

java.lang.NoClassDefFoundError: com/github/kevinsawicki/http/HttpRequest 
    at org.elasticsearch.thulac.MyTokenizer.thulacSeg(MyTokenizer.java:32) 
    at org.elasticsearch.thulac.MyTokenizer.<init>(MyTokenizer.java:64) 
    at org.elasticsearch.thulac.MyAnalyzer.createComponents(MyAnalyzer.java:12) 
    at org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:113) 
    at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:182) 
    at org.elasticsearch.action.admin.indices.analyze.TransportAnalyzeAction.shardOperation(TransportAnalyzeAction.java:230) 
    at org.elasticsearch.action.admin.indices.analyze.TransportAnalyzeAction.shardOperation(TransportAnalyzeAction.java:60) 
    at org.elasticsearch.action.support.single.custom.TransportSingleCustomOperationAction$AsyncSingleAction$1.run(TransportSingleCustomOperationAction.java:161) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 

Я использую kevinsawicki/http-request. Это потому, что я не помещал банку http-request в java-путь elasticsearch? И в случае необходимости, где я должен это поставить?

спасибо.

ответ

0

Да, вы должны предоставить вам файлы jar в папку lib elasticsearch.

Где? Это зависит от того, где установлен elasticsearch. Например. используйте find/-type d -name elasticsearch, чтобы найти реж. На Centos это /usr/share/elasticsearch/, который содержит подпапку lib. Или более удобным:

  • На Debian систем вы можете использовать dpkg -L elasticsearch и
  • на оборотов систем на основе как Centos, RedHat, Suse и т.д., вы можете использовать rpm -ql elasticsearch, чтобы узнать.

Попробуйте развернуть свой код и все зависимые библиотеки в этой папке lib.

+0

Я установил elasticsearch, только разархивировав его и выполнив '[path_to_elasticsearch] bin/elasticsearch'. И я попытался поместить http-request.jar в папку elasticsearch/lib, но все равно получить NoClassDefFoundError. Должен ли я установить поиск elastics по-другому? – dreamszl

+0

Это все тот же «NoClassDefFoundError»? – Alexander

+0

Да, и, наконец, я реализую класс HttpRequest другим mothod. Но он работает для другого NoClassDefFoundError, яйца Json NoClassDefFound.Спасибо. – dreamszl

Смежные вопросы