elasticsearch,Java,Maven,elasticsearch" /> elasticsearch,Java,Maven,elasticsearch" />

Java Elasticsearch:安装插件后出现NoClassDefFoundError

Java Elasticsearch:安装插件后出现NoClassDefFoundError,java,maven,elasticsearch,Java,Maven,elasticsearch,我自己编写了一个标记器插件,并用maven成功编译了它。安装后elasticsearch运行良好。但是,当我尝试使用它来分割句子时,我会得到以下错误消息: java.lang.NoClassDefFoundError: com/github/kevinsawicki/http/HttpRequest at org.elasticsearch.thulac.MyTokenizer.thulacSeg(MyTokenizer.java:32) at org.elasticsearch

我自己编写了一个标记器插件,并用maven成功编译了它。安装后elasticsearch运行良好。但是,当我尝试使用它来分割句子时,我会得到以下错误消息:

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)
java.lang.NoClassDefFoundError:com/github/kevinsawicki/http/HttpRequest
位于org.elasticsearch.thulac.MyTokenizer.thulacSeg(MyTokenizer.java:32)
请访问org.elasticsearch.thulac.MyTokenizer.(MyTokenizer.java:64)
在org.elasticsearch.thulac.MyAnalyzer.createComponents上(MyAnalyzer.java:12)
位于org.apache.lucene.analysis.AnalyzerWrapper.createComponents(AnalyzerWrapper.java:113)
位于org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:182)
在org.elasticsearch.action.admin.index.analyze.TransportAnalyzeAction.shardOperation(TransportAnalyzeAction.java:230)上
在org.elasticsearch.action.admin.index.analyze.TransportAnalyzeAction.shardOperation(TransportAnalyzeAction.java:60)上
位于org.elasticsearch.action.support.single.custom.TransportSingleCustomOperationAction$AsyncSingleAction$1.run(TransportSingleCustomOperationAction.java:161)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:724)
我用这个。是不是因为我没有将http请求jar放入elasticsearch java路径?如果有必要,我应该把它放在哪里


谢谢。

是的,您需要将jar文件提供给elasticsearch的lib文件夹

在哪里?这取决于elasticsearch的安装位置。例如,使用
find/-type d-name elasticsearch
查找目录。在Centos上,它是
/usr/share/elasticsearch/
,其中包含一个子文件夹
lib
。或更舒适:

  • Debian系统上,您可以使用
    dpkg-L elasticsearch
  • 在基于rpm的系统上,如Centos、RedHat、Suse等,您可以使用rpm-ql elasticsearch查找

请尝试在此
lib
文件夹中部署您的代码和所有相关库。

我仅通过解压缩安装了elasticsearch,并通过
[path\u to\u elasticsearch]bin/elasticsearch运行。我已经尝试将http-request.jar放入elasticsearch/lib文件夹,但仍然得到NoClassDefFoundError。我应该用另一种方法安装elasticsearch吗?它仍然是相同的
NoClassDefFoundError
?是的,最后我用另一种方法实现了HttpRequest类。但它适用于另一个NoClassDefFoundError,egg Json NoClassDefFound。谢谢。