java AbstractMethodError

时间:2010-05-04 05:38:34

标签: java lucene

如何在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

3 个答案:

答案 0 :(得分:3)

AbstractMethodError只能在类定义发生变化时发生不兼容,因此看起来您正在使用Lucene不同部分的JAR的不兼容组合。尝试将所有Lucene JAR更新到最新版本。

答案 1 :(得分:0)

另一个选择是你的索引发生了一些不好的事情 - 要么是使用不同版本的Lucene构建的,要么是文件丢失。尝试使用luke打开索引。

答案 2 :(得分:0)

确定!我找到了答案。这不是版本不匹配的问题。相反,扩展抽象类Directory的hadoop contrib的FileSystemDirectory没有实现抽象函数listAll()。 listAll()函数由lucene indexReader.open()函数调用。 我添加了这个功能,它现在正在运行。

由于