创建新的lucene索引没有找到类错误

时间:2013-10-28 10:55:52

标签: java lucene noclassdeffounderror

我正在使用lucene 4.0,我希望以这种方式创建一个新的indexWriter

IndexWriter index = LuceneUtils.createIndexWriter(indexPath, true);

(使用lucene 3.6工作) 其中indexPathString,其中包含索引的路径。我收到了这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/analysis/SimpleAnalyzer
at lucene.IndexCreator.<init>(IndexCreator.java:25)
at main.Main.main(Main.java:72)
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.analysis.SimpleAnalyzer
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 2 more

我已经读过除了lucene-analyzers-common-4.0.0.jar之外我需要将lucene-core-4.0.0.jar添加到项目中,但是我得到了同样的错误。 事实上,SimpleAnalyzer.classlucene-analyzers-common-4.0.0.jar的路径不是org.apache.lucene.analysis.SimpleAnalyzer而是org.apache.lucene.analysis.core.SimpleAnalyzer

2 个答案:

答案 0 :(得分:1)

看起来你的类路径中可能有一个3.6 jar。您是否可以验证旧版本是否未被提取,可能是传递依赖?

答案 1 :(得分:1)

您的项目中有lucene-core jar的旧版本。以前版本中SimpleAnalyzer类的路径为org.apache.lucene.analysis.SimpleAnalyzer。 在编译期间,系统能够在该路径上找到SimpleAnalyzer。但在运行时它指的是新版本。现在,该类存在于lucene-analyzers-common-4.0.0.jar下的不同路径下。因此NoClassDefFoundError。

您可以通过阅读此内容来进一步理解 - http://javareferencegv.blogspot.com/2013/10/debugging-javalangnoclassdeffounderror.html