getKieClasspathContainer() 方法返回空值
getKieClasspathContainer() method returning null values
KieContainer kieContainer = KieServices.Factory.get().getKieClasspathContainer();
上一行中的方法returns一个容器,但是对象"kieContainer"有空值。它没有 "containerId" 并且 kProject 中的字段(kieContainer 中的字段)的值为 0。 resources里面有一个META-INF目录,里面有一个kmodule.xml。 kmodule.xml的内容是:
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase packages="com.ruleEngine.drools.section03.step1">
<ksession name="StatelessPassportValidationStep1" type="stateless"/>
</kbase>
</kmodule>
调用getClasspathContainer()
方法的正确方法是什么?
Debugger for working project
Debugger for my project
所以这是解决方案。
如果您尝试在添加 JBoss Drools 库的情况下在 IDEA 中生成一个项目,它会将 Drools_6_2_0.xml 下载到 .idea/libraries (它不是 maven repo 源)。再一次,如果您尝试在任何地方获取类路径容器,版本就会变得不匹配(您在 pom.xml 和 drools 6.2.0 中声明的版本)并且它会在 "kieContainer" 对象中带来空值。
只需删除 Drools_6_2_0.xml 文件即可解决问题。感谢 Roddy 的想法。
KieContainer kieContainer = KieServices.Factory.get().getKieClasspathContainer();
上一行中的方法returns一个容器,但是对象"kieContainer"有空值。它没有 "containerId" 并且 kProject 中的字段(kieContainer 中的字段)的值为 0。 resources里面有一个META-INF目录,里面有一个kmodule.xml。 kmodule.xml的内容是:
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase packages="com.ruleEngine.drools.section03.step1">
<ksession name="StatelessPassportValidationStep1" type="stateless"/>
</kbase>
</kmodule>
调用getClasspathContainer()
方法的正确方法是什么?
Debugger for working project
Debugger for my project
所以这是解决方案。 如果您尝试在添加 JBoss Drools 库的情况下在 IDEA 中生成一个项目,它会将 Drools_6_2_0.xml 下载到 .idea/libraries (它不是 maven repo 源)。再一次,如果您尝试在任何地方获取类路径容器,版本就会变得不匹配(您在 pom.xml 和 drools 6.2.0 中声明的版本)并且它会在 "kieContainer" 对象中带来空值。 只需删除 Drools_6_2_0.xml 文件即可解决问题。感谢 Roddy 的想法。