【问题标题】:Jena TDB Dataset begin() failsJena TDB 数据集 begin() 失败
【发布时间】:2018-06-07 07:14:55
【问题描述】:

我想在一个项目中使用 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);

在编写多线程应用程序时,我正在按照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

感谢您的帮助!

【问题讨论】:

    标签: maven jena semantic-web tdb


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2015-03-21
      • 1970-01-01
      相关资源
      最近更新 更多