如何解决错误启动应用程序:使用 SWRL API 时创建查询引擎 Drools 时出错?

问题描述

我收到此错误消息

启动应用程序时出错:创建查询引擎 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,以及从认的 4.2.3 到 5.1 的 owl API。 17.我在可执行文件 main 中运行此代码

OWLOntologyManager ontologyManager = 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 库中包含的一些命令,这些命令在那个古老的版本中没有实现。

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...