2012-11-23 21 views
0

我试图使用Lucene StandardTokenizer如以下代码:StandardTokenizer覆盖最终方法setReader(Ljava/IO /阅读器;)V

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) 

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

回答

3

你的classpath中是否有两个不同版本的lucene?

方法setReader(...)被添加到4.0.0-BETA版本中的StandardTokenizer。但后来从StandardTokenizer中删除,并在4.0.0发行版之前在Tokenizer中作出最终决定。因此,我可能会在您的classpath中使用4.0.0-BETA版本的lucene-analyters-common jar版本,并且可能会在4.0.0发行版本中使用lucene-core jar版本的版本。

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

+0

帮忙,谢谢。 – khachik