java - Eclipse 无法从 Jar 加载类
问题描述
Eclipse JRE 4.15.0
我添加(从https://stanfordnlp.github.io/CoreNLP/api.htmlstanford-corenlp-4.0.0.jar
加载)到项目/构建路径/库/类路径。创建实例时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
如何解决自动建议和运行时导入之间的这种不一致?
解决方案
看起来这个库不是独立的。即它取决于其他一些库。因此,您不能只将单个 JAR 添加到您的项目并运行为,因为您还需要添加该 JAR 的依赖项及其依赖项等。这些依赖称为传递依赖。
我怎么知道?这是他们的下载页面的内容:
斯坦福 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 等构建工具下载所有依赖项并构建您的构建类路径。他们在该下载页面上有 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>
推荐阅读
- arrays - 将包含某个字符串值的元素排序到打字稿数组中的不同位置
- python - Numpy 不运行
- python - 不支持 C++ 类型作为 pyqtSignal() 类型参数类型
- docker - Openssl 命令在 Dockerfile 运行中不起作用
- python - 从字符串列表中构造一棵树
- python - 无法使用 pyenv 安装运行 IDLE:`Python 可能没有为 Tk 配置``ModuleNotFoundError: No module named _tkinter'
- javascript - 如何使用 Gauge 运行多个浏览器来模拟多个同时使用的用户?
- c# - 带有 CancellationToken 的 SHA256 哈希
- php - 为什么我在包含语句之前声明的变量在我的包含文件中不起作用
- java - 根据来自另一个列表的 id 过滤具有流的列表