java - 在 drools 中运行 helloworld 时出现空指针异常

标签 java eclipse nullpointerexception drools

我在运行一个简单的 helloworld 示例 drools 项目时遇到以下错误。

199 [main] ERROR org.drools.compiler.kie.builder.impl.KieContainerImpl - Unknown KieSession name: ksession-rules
java.lang.NullPointerException
    at com.sample.DroolsTest.main(DroolsTest.java:24)

代码:

package com.sample;

import org.kie.api.KieServices; import
org.kie.api.runtime.KieContainer; import
org.kie.api.runtime.KieSession;

/**  * This is a sample class to launch a rule.  */ public class
DroolsTest {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
            KieServices ks = KieServices.Factory.get();
            KieContainer kContainer = ks.getKieClasspathContainer();
            KieSession kSession = kContainer.newKieSession("ksession-rules");

            // go !
            Message message = new Message();
            message.setMessage("Hello World");
            message.setStatus(Message.HELLO);
            kSession.insert(message);
            kSession.fireAllRules();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    public static class Message {

        public static final int HELLO = 0;
        public static final int GOODBYE = 1;
        private String message;
        private int status;

        public String getMessage() {
            return this.message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public int getStatus() {
            return this.status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

    }

}

流口水代码:

package com.sample
import com.sample.DroolsTest.Message;

rule "Hello World"
when
    m : Message( status == Message.HELLO, myMessage : message )
then
    System.out.println( myMessage );
    m.setMessage( "Goodbye cruel world" );
    m.setStatus( Message.GOODBYE );
    update( m );
end

rule "GoodBye"
when
    Message( status == Message.GOODBYE, myMessage : message )
then
    System.out.println( myMessage );
end

最佳答案

看起来 drools kie-api/内部库执行在 src\main\resources\META-INF\maven\pom.properties 文件下寻找 drools eclipse 项目的强制值。

将我的 pom.xml 或 pom.properties 更新为以下内容在 6.0.0 drools 发行版上运行良好。

groupId=com.test.sample.drools
artifactId=DroolsTestProject
version=1

关于java - 在 drools 中运行 helloworld 时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20315910/

相关文章:

java - Minecraft Forge Gradlew JAVA_HOME 错误

java - 什么是 NullPointerException,我该如何解决?

java - java.lang.String.length处的NullPointerException(String.java :611))

java - com.google.api.client.json.jackson.JacksonFactory; Google 云端硬盘示例中缺少

java - 为 Callable 类型线程分配优先级

java - LWJGL - 出现错误 : "Cannot use offsets when Element Array Buffer Object is disabled"

eclipse - 如何在 Eclipse 中显示尾随空格?

windows - 使用 eclipse 从 git 存储库下载源代码?

java - Butterknife fragment 旋转给出 NullPointer

java - 如何优化这段丑陋的代码?