我想在一个项目中使用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
感谢您的帮助!
答案 0 :(得分:1)
AbstractMethodError
通常意味着您的类路径上存在不匹配的JAR。有关此主题的一些讨论和相关链接,请参阅Abstract Method Error。
您需要检查您的依赖项和环境,以确保您在编译时与运行时没有不同的版本
在您的项目上运行的 mvn dependency:tree
将打印出依赖关系树,如果您在Maven项目设置中以某种方式拥有多个版本的Jena库,则应该显示该依赖关系树。
根据您打包和调用代码的方式,您可能还需要检查如何为运行时构建类路径,以及如何打包应用程序(特别是如果您使用Maven Shade插件或以其他方式创建超级 - 罐)。没有任何细节,很难提供具体的建议。