0

我试图按照从 Apache Jena 网站创建基本 RDF的基本教程进行操作。

String personURI = "http://somewhere/JohnSmith";
String fullName = "John Smith";

Model model = ModelFactory.createDefaultModel();
Resource johnSmith = model.createResource(personURI);

johnSmith.addProperty(VCARD.FN, fullName);

我在 pom.xml 中添加了 3.0.1 Jena 依赖项,运行代码只发现它输出异常。

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.jena.atlas.lib.Cache.getIfPresent(Ljava/lang/Object;)Ljava/lang/Object;
  at org.apache.jena.enhanced.EnhGraph.getNodeAs(EnhGraph.java:133)
  at org.apache.jena.rdf.model.impl.IteratorFactory.asResource(IteratorFactory.java:71)
  at org.apache.jena.rdf.model.impl.IteratorFactory.asResource(IteratorFactory.java:62)
  at org.apache.jena.rdf.model.impl.ModelCom.getResource(ModelCom.java:888)
  at org.apache.jena.rdf.model.impl.ModelCom.createResource(ModelCom.java:1338)
  at com.lymba.proposal.summarizer.core.rdf.TestRdf.testRdf(TestRdf.java:15)
  at com.lymba.proposal.summarizer.core.rdf.TestRdf.main(TestRdf.java:21)

为什么基本示例会给我这个输出?它是直接从教程中复制的。

4

1 回答 1

0

这原来是一个依赖相关的问题。根据我从 jena-users 邮件列表中找到的一些信息,这与在我的类路径中找到的不同版本的 Jean 有关。

我检查了 Eclipse 中的依赖层次结构,发现我的另一个依赖项引入了 Jean 2.13.0。我在我的 pom 中添加了 Jean 2.13.0 工件的排除项,教程按预期工作。

于 2015-12-15T18:18:01.827 回答