Jena TDB Dataset begin()失败

时间:2018-06-07 07:14:56

标签: maven jena semantic-web tdb

我想在一个项目中使用Jena TDB。 这就是我在POM中添加的内容:

<dependency>
    <groupId>org.apache.jena</groupId>
    <artifactId>apache-jena-libs</artifactId>
    <version>3.7.0</version>
    <type>pom</type>
</dependency>

这些是我与jena相关的进口商品:

import org.apache.jena.query.*;
import org.apache.jena.tdb.TDBFactory;

有趣的是,代码编译,一切似乎都没问题。我甚至可以创建一个数据集并从中读取。

Dataset dataset = TDBFactory.createDataset(repoLocation);

在编写多线程应用程序时,我按照documentation中的建议调用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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

AbstractMethodError通常意味着您的类路径上存在不匹配的JAR。有关此主题的一些讨论和相关链接,请参阅Abstract Method Error

您需要检查您的依赖项和环境,以确保您在编译时与运行时没有不同的版本

在您的项目上运行的

mvn dependency:tree将打印出依赖关系树,如果您在Maven项目设置中以某种方式拥有多个版本的Jena库,则应该显示该依赖关系树。

根据您打包和调用代码的方式,您可能还需要检查如何为运行时构建类路径,以及如何打包应用程序(特别是如果您使用Maven Shade插件或以其他方式创建超级 - 罐)。没有任何细节,很难提供具体的建议。