1

我正在使用 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.class其实里面的路径lucene-analyzers-common-4.0.0.jar不是org.apache.lucene.analysis.SimpleAnalyzer但是org.apache.lucene.analysis.core.SimpleAnalyzer

4

2 回答 2

1

看起来你的类路径中可能有一个 3.6 jar。你能验证一个旧版本没有被引入,可能是传递依赖吗?

于 2013-10-29T02:25:01.937 回答
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

于 2013-10-29T03:48:10.757 回答