Stanford CoreNLP 出现错误: java.lang.NoClassDefFoundError。

5
我下载了斯坦福CoreNLP,当我运行他们网站上给出的代码时,会在这一行出现错误。
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

错误如下
Exception in thread "main" java.lang.NoClassDefFoundError: nu/xom/Node at sample1.main(sample1.java:35)
Caused by: java.lang.ClassNotFoundException: nu.xom.Node
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

我使用Eclipse IDE,我需要进行一些配置吗?请帮我解决这个问题!

你是否正确设置了类路径? - Tapas Bose
我在另一个不使用stanfordcorenlp类的程序上尝试了一下... 但是导入了import edu.stanford.nlp.ling.*;,这个工作得很好。我不明白出了什么问题。:( - CTsiddharth
4个回答

30
我已经从你提供的链接下载了stanford-corenlp-2012-01-08.tgz文件。我使用7-zip解压缩了它并发现了另一个名为stanford-corenlp-2012-01-08的压缩文件,并再次使用7-zip进行了解压缩。下面是内容: enter image description here 然后我在Eclipse中创建了一个新的Java项目,并在该项目内创建了一个名为“lib”的新文件夹,将以下JAR文件放入其中:
  • joda-time.jar
  • stanford-corenlp-2011-12-27-models.jar
  • stanford-corenlp-2012-01-08.jar
  • xom.jar
然后将项目的Java Build Path设置为这些JAR文件。 enter image description here 接下来我创建了一个带有main方法的测试类。
import java.util.Properties;

import edu.stanford.nlp.pipeline.StanfordCoreNLP;


public class NLP {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref");
        StanfordCoreNLP coreNLP = new StanfordCoreNLP(props);
    }

}

最后运行该应用程序。输出如下图所示:

输入图像描述

它成功运行。

希望这可以帮到你。


谢谢,我完成了!但是提示堆溢出,所以我将其减小到props.put(“annotators”,“tokenize,ssplit,pos,lemma”),它可以工作! :) - CTsiddharth
使用此API,建议使用8GB内存和64位操作系统的计算机。 - Tapas Bose

1
我使用的是 stanford-corenlp-full-2014-10-31 版本,遇到了同样的问题。
Tapas Bose 的回答非常好,但是对于这个版本(以及可能的早期版本),你还需要包含另外两个 .jar 文件才能消除错误。
  • ejml-0.23.jar
  • jollyday.jar
开发人员也在网站上更新了这些信息:

使用以下命令行处理一个文件,使用Stanford CoreNLP(将JAR文件日期扩展名调整为您下载的版本):

java -cp stanford-corenlp-VV.jar:stanford-corenlp-VV-models.jar:xom.jar:joda-time.jar:jollyday.jar:ejml-VV.jar -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP [ -props <YOUR CONFIGURATION FILE> ] -file <YOUR INPUT FILE>

1
你还需要将xom.jar添加到构建路径中。

0
请在您的库中包含ejml-0.23.jar。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接