Java 使用Lucene IndexableField在运行时出现NoClassDefFoundError

Java 使用Lucene IndexableField在运行时出现NoClassDefFoundError,java,ant,runtime-error,lucene,Java,Ant,Runtime Error,Lucene,我已经写了一个程序,它使用Lucene来文本匹配刮板的地址。在编译和运行NetBeans时,它的一切都可以正常工作,但是在从命令行构建和运行时,我收到以下消息: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/index/IndexableField at java.lang.Class.forName0(Native Method) at java.lang.Class.f

我已经写了一个程序,它使用Lucene来文本匹配刮板的地址。在编译和运行NetBeans时,它的一切都可以正常工作,但是在从命令行构建和运行时,我收到以下消息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/lucene/index/IndexableField
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)

我发现类IndexableField.class不在任何jar文件中,所以我不知道它为什么首先工作,更不用说它在终端构建和运行后为什么不工作。

我遇到了这个问题。根据Lucene文档,我在类路径中添加了4个JAR并解决了这个问题。 以下是文件中的内容

“设置类路径

首先,您应该下载最新的Lucene发行版,然后将其解压缩到工作目录

您需要四个JAR:Lucene JAR、queryparser JAR、common analysis JAR和Lucene demo JAR。您应该在提取归档文件时创建的core/目录中看到Lucene JAR文件——它的名称应该类似于Lucene core-{version}.JAR。您还应该看到名为Lucene queryparser-{version}的文件.jar、lucene分析器common-{version}.jar和lucene demo-{version}.jar分别位于queryparser、analysis/common/和demo/下


将这四个文件都放在Java类路径中。”

您是否有任何与lucene相关的JAR隐藏在某处?在IDE中运行java应用程序(如NetBeans或Eclipse)很简单,因为类路径是由IDE自动计算出来的。所以基本上你需要做两件事。1.搜索像lucene-*.jar这样的罐子;2.当您通过命令行运行应用程序时,首先需要设置类路径javac-cpc命令行可能与NetBeans有不同的类路径,IndexableField.class应该在Lucene-core.jar.Cheers中。IndexableField由于某种原因不在核心jar中。我已经下载了预编译版本(我一直从源代码构建),现在可以正常工作了。