我已經使用了owl-api版本3.5,現在我想切換到版本4,但是我得到一個運行時異常。就像下面的示例代碼(它可以在3.5版本中正常工作)一樣,每次調用函數「manager.addAxiom(...)」時都會拋出java.lang.NoSuchMethodError。從owl-api 3.5切換到4.x時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的依賴手工,後來與行家。我用版本4.0.2和4.1.0-RC2進行了測試。兩者都表現出相同的行爲。
我找不到任何解決方案。所以我希望有人能幫助我。
感謝,
克里斯
不,我發現哪裏出了問題。我在類路徑中使用了owl-api的舊版本(v3.5和v4.0.2)。當我從classpath中刪除這個版本時,異常消失了。現在它也適用於owl-api的4.1版本。 – Chris