当前位置: 首页 > 知识库问答 >
问题:

在drools中运行helloworld时获取空指针异常

满子实
2023-03-14

我在运行一个简单的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

共有3个答案

宰父冠玉
2023-03-14

回答得有点晚,但是。。。

我检查了我的pom。属性文件,它只包含以下内容:

groupId=
artifactId=
version=

没有定义任何内容!将其更改为:

groupId=DroolsTest
artifactId=DroolsTest
version=0.0.1-SNAPSHOT  

把你拥有的任何东西作为pom中的那些属性。xml并将其放入pom中。属性修复了我的问题。现在运行良好。

端木桐
2023-03-14

我最近开始使用JBPM,遇到了一个类似的问题。我有两个问题需要解决。

首先,我需要创建pom。此线程中另一个答案中列出的属性文件。我必须创建src/main/resources/META-INF/maven/pom。属性文件,因为当我通过eclipse创建新的JBPM Maven项目时,它不是自动生成的。该文件应包含以下信息,这些信息应与项目的pom文件相匹配:

groupId=com.sample
artifactId=jbpm-example
version=1.0.0-SNAPSHOT

我遇到的另一个问题是有一个空白的kmodule.xml。这应该在src/main/resources/META-INF/kmodule.xml中。文件中需要以下内容:

<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="process" packages="process">
        <ksession name="ksession-process"/>
    </kbase>
</kmodule>

如果您查看newKieSession方法参数,它需要匹配ktext元素的“名称”属性。kbase元素的“包”属性需要匹配您的DRL文件所在的包名称。

严令秋
2023-03-14

它看起来像drools kie api/internal library execution在src\main\resources\META-INF\maven\pom下查找强制值。drools eclipse项目的属性文件。

更新我的pom。xml或pom。以下内容的属性在6.0.0 drools分布上运行良好。

groupId=com.test.sample.drools
artifactId=DroolsTestProject
version=1
 类似资料:
  • 此函数转换Hbase格式的数据 这是我在第125行得到的错误:hbaseputs.saveasnewapiHadoopDataSet(job.getconfiguration)

  • 控制台输出: DroolsTest中的第12-28行。Java 全新安装Eclipse、Java和Drools插件。 我见过其他人收到空指针错误,但当Drools Core不存在时,他们会收到大约15个错误。我找不到任何人只收到这2个。 我想我错过了一些安装件,但我想不出来。此外,我还有slf4j api。Drools库中的jar文件在包资源管理器中可见。 我对Java很陌生,所以向我提问,我会发

  • 我正在使用CSV reader从获取数据,并在使用DataProvider的测试函数中使用该数据。

  • 我现在使用的是Itext PDFSmartCopy。我正在使用XMLWorker向document对象添加一些业务内容。然后我声明了一个阅读器(用于连接到此文档对象的pdf文件)。然后我用相同的文档对象和输出文件流作为参数调用PdfSmartCopy。然后使用常规步骤将页面复制到文档中, 但如果我使用一个新的文档对象ie而不添加业务内容,则这一块工作得很好。

  • 我使用drools with Spark来执行一些规则。我已经编写了一个加载.drl文件的方法。并实例化“InternalKnowledgeBase”的对象。下面的代码在本地模式下工作,但当我在集群(EMR)中运行时,我遇到以下异常。附加代码和异常堆栈跟踪。 请查找异常堆栈跟踪。 感谢你的帮助!谢谢。

  • 当我运行Nutch命令~/Nutch/runtime/deploy$bin/Nutch crawl urls-dir/user/dlequoc/urls-depth 2-topn5时,我得到了以下异常: ====================================================================================== 你能帮忙吗?谢谢!