【问题标题】:drools 6.0.0.Beta3 NullPointerException流口水 6.0.0.Beta3 NullPointerException
【发布时间】:2013-06-26 08:00:17
【问题描述】:

我正在使用 drools 专家 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)
    ...

【问题讨论】:

    标签: nullpointerexception drools


    【解决方案1】:

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

    无论如何,您应该遇到报告重复规则名称而不是 NPE 的编译问题。这绝对是我报告的一个错误 here 并已在主服务器上修复。

    感谢您找到这个。

    【讨论】:

    • 就像我说的,我正在尝试更新规则。我的规则的 drl 基于用户输入 - 可以更改 - 我想根据新输入更新 drl。是否有另一种方法,无需再次添加规则,以反映 drl 中的更改?堆栈跟踪确实与您在错误描述中的内容匹配。
    猜你喜欢
    • 2011-12-06
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多