maven - Jena TDB 数据集 begin() 失败
问题描述
我想在项目中使用 Jena TDB。这是我在 POM 中添加的内容:
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<version>3.7.0</version>
<type>pom</type>
</dependency>
这些是我与耶拿相关的进口:
import org.apache.jena.query.*;
import org.apache.jena.tdb.TDBFactory;
有趣的是,代码编译并且一切似乎都很好。我什至可以创建一个数据集并从中读取。
Dataset dataset = TDBFactory.createDataset(repoLocation);
当我正在编写一个多线程应用程序时,我正在按照文档begin
中的建议调用该方法:
dataset.begin(ReadWrite.READ);
这导致:
Exception in thread "main" java.lang.AbstractMethodError: Class "org.apache.jena.tdb.transaction.DatasetGraphTransaction" does not implement the requested method
我感谢您的帮助!
解决方案
AbstractMethodError
通常意味着您的类路径上存在不匹配的 JAR。有关此主题的一些讨论和相关链接,请参阅抽象方法错误。
您需要检查您的依赖项和环境,以确保您在编译时与运行时没有不同的版本
mvn dependency:tree
在您的项目上运行将打印出依赖关系树,如果您在 Maven 项目设置中以某种方式拥有多个版本的 Jena 库,该树应该会显示出来。
根据您打包和调用代码的方式,您可能还需要检查您的类路径是如何为运行时构建的,以及您的应用程序是如何打包的(特别是如果您使用 Maven Shade 插件或以其他方式创建 uber-jar)。如果没有这方面的任何细节,很难提供具体的建议。
推荐阅读
- file - 在循环批处理中创建具有随机数值的 n 个文件
- asp.net-core - 适用于 Windows、AspNetCore 和 aspnet-webpack 热模块的 Docker
- html - HTTPS 迁移
- matlab - 矩阵列相关,不包括自相关,Matlab
- javascript - 如何在侧边栏打开整个屏幕半黑?
- angular - 将通过 Nginx 发出的请求直接发送到 Angular 路由组件
- javascript - 通过相同的类名更改所有 ID 值
- c# - ASP.net webforms 存储过程中的异步调用
- jsf-2 - 当我将默认语言环境定义为 es_ES 时,为什么会出现 MissingResourceException 语言环境 en_US?
- c# - 如何使用数组计算总数和最小生成树