drools 6.0.0.Beta3 NullPointerException

时间:2013-06-26 08:00:18

标签: nullpointerexception drools

我正在使用drools expert 6.0.0.Beta3(最新在下载页面上提供),我正在尝试更新工作内存中存在的规则。基本上,我再次调用了kBuilder的add(),如下所示:

kBuilder.add(org.drools.io.ResourceFactory.newByteArrayResource(drl.getBytes()),
            org.drools.builder.ResourceType.DRL);

当我第一次添加规则时,它会被添加,甚至在条件满足时触发。但是,当再次调用add()时,如上所述,我得到以下异常:

java.lang.NullPointerException
    at org.drools.compiler.compiler.PackageBuilder.validateUniqueRuleNames(PackageBuilder.java:1314)
    at org.drools.compiler.compiler.PackageBuilder.initPackageRegistry(PackageBuilder.java:916)
    at org.drools.compiler.compiler.PackageBuilder.addPackage(PackageBuilder.java:869)
    at org.drools.compiler.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:474)
    at org.drools.compiler.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:670)
    at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
    at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
    at org.drools.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:34)
    ...

1 个答案:

答案 0 :(得分:1)

你做错了,因为尝试将两次相同的DRL添加到KnowledgeBuilder最终会在知识库中两次使用相同的规则。老实说,我很想知道你为什么要这样做。

无论如何,您应该有一个报告重复规则名称而不是NPE的编译问题。这绝对是我报告here已经修复的错误。

感谢您找到了这个。