Я работаю с экспертом drools 6.0.0.Beta3 (последний доступен на странице загрузки), и я пытаюсь обновить правило, существующее в рабочей памяти. В принципе, я звоню добавить() из kBuilder снова, как так:drools 6.0.0.Beta3 NullPointerException
kBuilder.add(org.drools.io.ResourceFactory.newByteArrayResource(drl.getBytes()),
org.drools.builder.ResourceType.DRL);
Когда я первый добавить правило, он будет добавлен, и даже срабатывает, когда условия удовлетворения. Тем не менее, при вызове добавить() снова, как описано выше, я получаю следующее исключение:
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)
...
Как я уже сказал, я пытаюсь обновить правило. Drl для моего правила основан на пользовательском вводе - который может измениться - и я хочу обновить drl в соответствии с новым вводом. Есть ли другой способ, не добавляя снова правило, чтобы отразить изменения в drl? Трассировка стека соответствует тому, что у вас есть в описании ошибки. –