0

我正在尝试使用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)

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

4

1 回答 1

3

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

该方法setReader(...)已添加到StandardTokenizer4.0.0-BETA 版本中。但它后来在 4.0.0 发布版本之前被删除StandardTokenizer并最终进入。Tokenizer所以我的类路径中可能有lucene-analyzers-common jar的 4.0.0-BETA 版本和lucene-core jar 的 4.0.0 发布版本。

LUCENE-4343可能是改变这一点的问题。

于 2012-11-23T08:53:34.217 回答