0

我收到此错误消息

启动应用程序时出错:创建查询引擎 Drools 时出错。例外:java.lang.NoSuchMethodError。消息:'void org.semanticweb.owlapi.util.PriorityCollection.add(java.io.Serializable)'

我正在使用 SWRL API for Java 在 OWL 本体上运行 SQWRL 查询。因此,我从 Maven 构建了 edu.stanford.swrl swrlapi-example,在 pom 文件中更新了默认 swrl API 和 swrlapi-drools-engine 从版本 1.0.3 到 2.0.9 以及 owl API 从默认 4.2.3 到 5.1。 17. 我在可执行文件 main 中运行这段代码:

OWLOntologyManager 本体管理器 = OWLManager.createOWLOntologyManager();

  File file = new File("C:\\Users\\Hugo\\Desktop\\Universidad\\SUPAERO\\S4\\SWRLapiTEST\\Prueba.owl");

  OWLOntology ontology = ontologyManager.loadOntologyFromOntologyDocument(file); 

    ontologyManager.createOntology();

     SQWRLQueryEngine queryEngine = SWRLAPIFactory.createSQWRLQueryEngine(ontology);

程序在最后一个命令处停止。我不知道我做错了什么。如果我使用 swrl api 和 swrlapi-drools-engine 的 1.0.3 版,它可以工作,但是我想使用 tbox 和 abox 库中包含的一些命令,这些命令在那个古老的版本中没有实现。

4

1 回答 1

0

您看到的异常是类路径中多个不兼容的 OWLAPI 版本的症状。确保您只使用一个版本(您所说的 5.1.17)。如果找不到问题,请添加有关如何设置类路径的详细信息(您可以在代码开头打印 java.class.path 环境变量以获取正在使用的确切类路径)。

于 2021-03-23T20:01:59.910 回答