java AbstractMethodError
如何在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
只有在类定义发生不兼容的情况下才会发生AbstractMethodError
,因此看起来您正在使用Lucene不同部分的JAR的不兼容组合。 尝试将所有Lucene JAR更新到最新版本。
另一个选择是你的索引发生了一些不好的事情 – 要么是使用不同版本的Lucene构建的,要么是文件丢失。 尝试使用luke打开索引。
好! 我找到了答案。 这不是版本不匹配的问题。 相反,扩展抽象类Directory的hadoop contrib的FileSystemDirectory没有实现抽象函数listAll()。 listAll()函数由lucene indexReader.open()函数调用。 我添加了这个function,它现在正在运行。
谢谢