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

クラスパスに lucene の 2 つの異なるバージョンがありますか?

メソッドは4.0.0-BETA バージョンでsetReader(...)追加されました。StandardTokenizerしかし、それは後で削除され、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 に答える