如何在lucene中处理此错误:
java.lang.AbstractMethodError: org.apache.lucene.store.Directory.listAll()[Ljava/lang/String;
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:568)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:69)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:316)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:188)
我正在进行lucene函数调用,但不幸的是它本身调用了某个类的抽象方法,从上面的错误可以看出这一点。为此做了什么工作?
谢谢,Akhil
答案 0 :(得分:3)
AbstractMethodError
只能在类定义发生变化时发生不兼容,因此看起来您正在使用Lucene不同部分的JAR的不兼容组合。尝试将所有Lucene JAR更新到最新版本。
答案 1 :(得分:0)
另一个选择是你的索引发生了一些不好的事情 - 要么是使用不同版本的Lucene构建的,要么是文件丢失。尝试使用luke打开索引。
答案 2 :(得分:0)
确定!我找到了答案。这不是版本不匹配的问题。相反,扩展抽象类Directory的hadoop contrib的FileSystemDirectory没有实现抽象函数listAll()。 listAll()函数由lucene indexReader.open()函数调用。 我添加了这个功能,它现在正在运行。
由于