Java Elasticsearch:安装插件后出现NoClassDefFoundError
我自己编写了一个标记器插件,并用maven成功编译了它。安装后elasticsearch运行良好。但是,当我尝试使用它来分割句子时,我会得到以下错误消息: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
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。谢谢。