Eclipse не удалось загрузить класс из Jar - PullRequest
1 голос
/ 26 мая 2020

Eclipse JRE 4.15.0

Я добавил stanford-corenlp-4.0.0.jar (загружается из https://stanfordnlp.github.io/CoreNLP/api.html) в Project / Build Path / Libraries / Classpath. При создании экземпляра 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

Как исправить это несоответствие между автоматическим предложением и импортом среды выполнения?

1 Ответ

0 голосов
/ 26 мая 2020

Похоже, эта библиотека не является отдельной. Т.е. это зависит от каких-то других библиотек. Таким образом, вы не можете просто добавить один JAR в свой проект и запускать его от имени, так как вам также необходимо добавить зависимости этого JAR и их зависимости и так далее. Эти зависимости называются транзитивными.

Откуда мне это знать? Вот что написано на их странице загрузки :

Stanford CoreNLP можно загрузить по ссылке ниже. Будет загружен большой (536 МБ) zip-файл, содержащий (1) банку кода CoreNLP, (2) банку моделей CoreNLP (требуется в вашем пути к классам для большинства задач) (3) библиотеки, необходимые для запуска CoreNLP , и (4) документация / исходный код проекта. Это все, чтобы начать работу на английском sh! Разархивируйте этот файл, откройте полученную папку, и вы готовы к его использованию.

Видите этот пункт №3?

Еще одна цитата:

Maven: Вы можете найти Stanford CoreNLP на Maven Central. Важно знать, что CoreNLP нуждается в своих моделях для запуска (большинство частей, помимо токенизатора и разделителя предложений), поэтому вам нужно указать как jar кода, так и jar моделей в вашем pom. xml , следующим образом: (Примечание: выпуски Maven обычно создаются через несколько дней после выпуска на веб-сайте.)

Итак, лучший способ использовать его - позволить инструменту сборки, например Gradle или Maven загрузите все зависимости и создайте свой путь к классам сборки. У них есть примеры для 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>
...