StandardTokenizer会覆盖final方法setReader。(Ljava / io / Reader;)V

时间:2012-11-23 06:36:45

标签: java lucene classloader

我正在尝试使用Lucene StandardTokenizer,如下面的代码所示:

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.util.Version;

public class App {
    public static void main(String[] args) throws Exception {
        // line 28 goes below
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
        // the rest is irrelevant
    }
}

投掷VerifyError

Exception in thread "main" java.lang.VerifyError: class org.apache.lucene.analysis.standard.StandardTokenizer overrides final method setReader.(Ljava/io/Reader;)V
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at lt.App.main(App.java:28)

任何想法如何解决这个问题?非常感谢。

1 个答案:

答案 0 :(得分:3)

您的类路径中是否有2个不同版本的lucene?

方法setReader(...)已添加到4.0.0-BETA版本中的StandardTokenizer。但它后来从StandardTokenizer中删除,并在4.0.0发行版之前在Tokenizer中取得了最终结果。所以我可能在你的类路径中有4.0.0-BETA版本的 lucene-analyzers-common jar以及 lucene-core jar的4.0.0发行版。

LUCENE-4343可能是改变这种情况的问题。