【问题标题】:Eclipse failed to load class from JarEclipse 无法从 Jar 加载类
【发布时间】:2020-05-26 19:08:26
【问题描述】:

Eclipse JRE 4.15.0

我将stanford-corenlp-4.0.0.jar(从https://stanfordnlp.github.io/CoreNLP/api.html 加载)添加到项目/构建路径/库/类路径。 创建CoreDocument 实例时

CoreDocument document = new CoreDocument("str");

Eclipse 自动提示

import edu.stanford.nlp.pipeline.StanfordCoreNLP;

但在执行期间导入不起作用:

Exception in thread "main" java.lang.NoClassDefFoundError: edu/stanford/nlp/pipeline/CoreDocument
    at main.CoreNLP.main(CoreNLP.java:35)
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.pipeline.CoreDocument

如何解决自动建议和运行时导入之间的这种不一致问题?

【问题讨论】:

    标签: java eclipse jar


    【解决方案1】:

    看起来这个库不是独立的。 IE。它取决于其他一些库。因此,您不能只将单个 JAR 添加到项目中并运行为,因为您还需要添加该 JAR 的依赖项及其依赖项等。这些依赖项称为传递依赖项。

    我怎么知道?这是他们的download page 所说的:

    Stanford CoreNLP 可通过以下链接下载。这将下载一个大的 (536 MB) zip 文件,其中包含 (1) CoreNLP 代码 jar,(2) CoreNLP 模型 jar(大多数任务的类路径中需要)(3) 运行 CoreNLP 所需的库,以及 (4) 项目的文档/源代码。这就是继续英语的一切!解压缩此文件,打开生成的文件夹即可使用它。

    看到第 3 条了吗?

    再引用一句:

    Maven:您可以在 Maven Central 上找到 Stanford CoreNLP。 要知道的关键是CoreNLP 需要它的模型来运行(除了分词器和句子拆分器之外的大部分部分),因此您需要在 pom.xml 中指定代码 jar 和模型 jar,如下:(注意:Maven 发布通常在网站发布后几天发布。)

    因此,使用它的最佳方法是让 Gradle 或 Maven 等构建工具下载所有依赖项并构建您的构建类路径。他们在 downloads page 上有 Maven 的示例:

    <dependencies>
        <dependency>
            <groupId>edu.stanford.nlp</groupId>
            <artifactId>stanford-corenlp</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>edu.stanford.nlp</groupId>
            <artifactId>stanford-corenlp</artifactId>
            <version>4.0.0</version>
            <classifier>models</classifier>
        </dependency>
    </dependencies>
    

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 2013-06-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2013-01-11
      相关资源
      最近更新 更多