Drools getKieClasspathContainer()方法返回空值

Drools getKieClasspathContainer()方法返回空值,drools,rule-engine,Drools,Rule Engine,前一行中的方法返回一个容器,但对象“kieContainer”具有空值。它没有“containerId”,kProject中的字段(kieContainer中的字段)的值为0。参考资料中有一个META-INF目录,其中包含一个kmodule.xml。kmodule.xml的内容包括: KieContainer kieContainer = KieServices.Factory.get().getKieClasspathContainer(); 调用getClasspathContaine

前一行中的方法返回一个容器,但对象“kieContainer”具有空值。它没有“containerId”,kProject中的字段(kieContainer中的字段)的值为0。参考资料中有一个META-INF目录,其中包含一个kmodule.xml。kmodule.xml的内容包括:

KieContainer kieContainer = KieServices.Factory.get().getKieClasspathContainer();

调用
getClasspathContainer()
方法的正确方法是什么

所以这里是解决方案。 如果您试图在IDEA中生成一个添加了JBoss Drools库的项目,它会将Drools_6_2_0.xml下载到.IDEA/libraries中(它不是maven repo源代码)。同样,如果您尝试在任何地方获取类路径容器,则版本会变得不匹配(您在pom.xml和drools 6.2.0中声明的版本),并且会在“kieContainer”对象中带来空值。
只要删除Drools_6_2_0.xml文件,问题就会解决。感谢Roddy的想法。

要确认,当你说在
资源中有
META-INF
目录时,它在
src/main/resources
中,是吗?例如,
src/main/resources/META-INF/
?你为什么要得到这个项目?如果从类路径读取kmodule,您应该能够直接使用容器,例如,
kieContainer.NewsStatelessSession(“无状态PassportValidationStep1”)
@roddyoffrozenpeas是的,有。我编写的代码实际上与一个工作示例项目相同。我从一开始就做了每一步,但都不起作用。kProject并不重要,我提到它是因为工作样本项目也带来了价值。但我自己的代码不会返回。这篇文章是经过编辑的。希望图像会有帮助看起来您的kmodule.xml实际上不在类路径上。请检查您的项目是如何设置的,您的IDE中可能有一些配置您遗漏了(例如,可能遗漏了或需要作为maven项目或其他内容重新导入)。它已经是maven项目,依赖插件等都已设置。事实上,我确实多次检查了Dependences的版本。但还没有设法解决这个问题。我想我应该考虑IDE设置,很高兴你把它弄清楚了!
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
  <kbase packages="com.ruleEngine.drools.section03.step1">
    <ksession name="StatelessPassportValidationStep1" type="stateless"/>
  </kbase>    
</kmodule>