我已经使用了owl-api版本3.5,现在我想切换到版本4,但是我得到了一个运行时异常。如下面的示例代码(在3.5版中运行良好),它在每次调用函数"manager.addAxiom(...)“时抛出一个java.lang.NoSuchMethodError。
WLOntologyManager manager = OWLManager.createOWLOntologyManager();
IRI ontologyIRI = IRI.create("http://example.com/owlapi/families");
OWLOntology ont = manager.createOntology(ontologyIRI);
OWLDataFactory factory = manager.getOWLDataFactory();
OWLIndividual john = factory.getOWLNamedIndividual(IRI.create(ontologyIRI + "#John"));
OWLIndividual mary = factory.getOWLNamedIndividual(IRI.create(ontologyIRI + "#Mary"));
OWLObjectProperty hasWife = factory.getOWLObjectProperty(IRI.create(ontologyIRI + "#hasWife"));
OWLObjectPropertyAssertionAxiom axiom1 = factory.getOWLObjectPropertyAssertionAxiom(hasWife, john, mary);
manager.addAxiom(ont, axiom1);
...抛出的整个exeption是这样写的:
Exception in thread "main" java.lang.NoSuchMethodError: org.semanticweb.owlapi.model.OWLOntologyManager.addAxiom(Lorg/semanticweb/owlapi/model/OWLOntology;Lorg/semanticweb/owlapi/model/OWLAxiom;)Lorg/semanticweb/owlapi/model/parameters/ChangeApplied;
at de.ifak.Writer.OWL.Example.OWLMinimalTest.main(OWLMinimalTest.java:26)我已经在一个干净的Java项目中测试了代码,并添加了owl-api依赖项手册,后来还添加了maven。我已经用4.0.2和4.1.0-RC2版本进行了测试。两者都表现出了相同的行为。
我找不到任何解决方案。所以我希望有人能帮助我。
谢谢,
克里斯
发布于 2015-10-14 16:03:03
好吧,我自己找到了一个解决方案。如果我更改代码
manager.addAxiom(ont, axiom1);至
Set<OWLAxiom> axiomsToAdd = new HashSet<OWLAxiom>();
axiomsToAdd.add(axiom1);
manager.addAxioms(ont, axiomsToAdd);即使使用4.1版的owl-api,所有功能都运行得很好。
编辑:好的,我犯了一个错误。它在4.0.2版本中工作得很好,但在4.1版本中,当我调用以下命令时,会得到相同的异常:
manager.addAxioms(ont, axiomsToAdd);就像我打电话的时候:
manager.addAxiom(ont, axiom1);发布于 2015-10-14 23:36:48
addAxiom方法仍然存在,但其返回类型已更改。是否将返回的值赋给变量?
https://stackoverflow.com/questions/33107195
复制相似问题