问题
在使用drools7的时候,通过kmodule.xml文件加载规则的时候,在获取KieSession的时候总是报空指针。但是明明代码之前测试过是没用问题的。
解决
在碰到几次这个问题的时候,大致摸索出一个解决方案,但是问题的具体原因还需要继续跟进。问题原因大致是和Maven有关系。可能是存在缓存问题。所以在我将maven项目重新编译一下就可以了。idea上操作如下:
如果compile还是不行,就先clean再compile一下。
相关代码
kmodule.xml:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<kbase name="rule1KB" packages="rules">
<ksession name="rule1KS"/>
</kbase>
</kmodule>
Java代码获取session:
KieContainer kc = KieServices.Factory.get().getKieClasspathContainer("rule1KB");
KieSession kieSession = kc.newKieSession("rule1KS");
int i = kieSession.fireAllRules();
System.out.println("执行了"+ i);
kieSession.dispose();