java - kieservices.factory.get() 在 kie-api7.6.0 中返回 null

标签 java drools kie

我使用的是 kie-api 7.6.0。

当我尝试获取 kieservices.factory.get() 时,它返回 null

我的Java项目是一个gradle项目。

可能是什么原因?我的Java项目是一个gradle项目。

final ReleaseIdImpl releaseId = new ReleaseIdImpl(RULE_PACKAGE, RULE_NAME,
            RULE_VERSION);
    final KieServices ks = KieServices.Factory.get();

    final KieContainer kContainer = ks.newKieContainer(releaseId);

我将 ks 设为 null,因此在 ks.newKieContainer(releaseId); 处出现 NullPointerException;

我已经添加了以下 jar 的依赖项

drools-compiler-6.5.0.Final.jar
drools-core-6.5.0.Final.jar
drools-decisiontables-6.5.0.Final.jar
drools-jsr94-6.5.0.Final.jar
drools-persistence-jpa-6.5.0.Final.jar
drools-templates-6.5.0.Final.jar
org.drools.eclipse-6.5.0.Final.jar
kie-maven-plugin-6.5.0.Final.jar
kie-api-6.5.0.Final.jar
kie-ci-6.5.0.Final.jar
kie-internal-6.5.0.Final.jar

最佳答案

我相信这与这里的原因相同:Drools 7.4.1 kieservices.factory.get() returns null

这是我的回答。


当我们尝试在我们的网络服务器中使用 Drools 时,我们遇到了同样的问题 嵌入式 Grizzly http 服务器。

我们还需要添加 drools-compiler 依赖项,但仅此并不能解决问题。

由于类路径上存在来自不同依赖项的多个 kie.conf 文件,因此 uber-jar 最终只有一个,并且缺少要加载的类的定义。

除了 drools-core kie.conf 中的这些条目之外:

org.kie.api.io.KieResources = org.drools.core.io.impl.ResourceFactoryServiceImpl
org.kie.api.marshalling.KieMarshallers = org.drools.core.marshalling.impl.MarshallerProviderImpl
org.kie.api.concurrent.KieExecutors = org.drools.core.concurrent.ExecutorProviderImpl

我们将这些行从 drools-compiler 添加到我们的 uber-jar kie.conf:

org.kie.api.KieServices = org.drools.compiler.kie.builder.impl.KieServicesImpl
org.kie.internal.builder.KnowledgeBuilderFactoryService = org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl

否则 KieServices 未加载并且 KieServices.Factory.get() 返回 null。

我们随后使用

修改构建的 jar
jar uf myjar.jar META-INF/kie.conf

修改包含的 kie.conf 文件。我们无法找到一个干净的 Maven 集成解决方案。欢迎任何建议...

关于java - kieservices.factory.get() 在 kie-api7.6.0 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295671/

相关文章:

drools - 找不到KieModule : org.默认:artifact:1. 0.0-快照

java - jBPM 和 JPA 事务管理器 : no local transaction to join

java - 从静态内部类调用非静态方法

java - 不幸的是,(应用程序名称)已停止 - Android 开发错误

流口水复杂的事实

state - Drools是映射业务规则/逻辑的最有效方法吗?

eclipse - kie-maven-plugin 的 M2E 连接器?

java - newKieSession 是线程安全的吗?

java - 使用 Gradle 和 Spring Boot 从 Java 引用 Groovy 导致“找不到符号”

java - 将第二个 TextView 添加到 customAdapter ListView