java - NullPointerException in Drools API -
i getting null pointer exception while running java program. addpackagefromdrl
not working , hence, pkg returned builder.getpackage()
null.
i using drools 6
private static rulebase readrules() throws droolsparserexception, ioexception { reader source = new inputstreamreader( messagedroolstest1.class.getclassloader().getresourceasstream( "rule.drl" ) ); system.out.println("source:" + source); packagebuilder builder = new packagebuilder(); builder.addpackagefromdrl( source ); system.out.println("builder:" + builder); bundle pkg = builder.getpackage(); system.out.println("package:" + pkg); rulebase rulebase = rulebasefactory.newrulebase(); rulebase.addpackage( pkg ); homecoming rulebase; }
i tried alternate approach , still getting runtime exception.
private static knowledgebase createknowledgebase() { knowledgebuilder builder = knowledgebuilderfactory.newknowledgebuilder(); //add drl file builder file drl = new file("rules.drl"); builder.add(resourcefactory.newfileresource(drl), resourcetype.drl); if (builder.haserrors()) { throw new runtimeexception(builder.geterrors().tostring()); } knowledgebase knowledgebase = knowledgebasefactory.newknowledgebase(); //add knowledge base of operations packages builder rules drl file. knowledgebase.addknowledgepackages(builder.getknowledgepackages()); homecoming knowledgebase; }
error
exception in thread "main" org.drools.runtimedroolsexception: unable load dialect 'org.drools.rule.builder.dialect.java.javadialectconfiguration: java:org.drools.rule.builder.dialect.java.javadialectconfiguration'
this works me, @ to the lowest degree with right drl file.
i suggest add
system.out.println("builder:" + builder); if( builder.haserrors() ){ system.out.println("builder has errors!"); }
if shows there errors, utilize other methods retrieve messages.
drools 6 introduces whole set of new classes (knowledge*) , should utilize that. using internal api (or used in drools 5) not recommended , code may break release change.
** later **
a simple build procedure 6.x:
public void build() throws exception { kieservices kieservices = kieservices.factory.get(); kiefilesystem kfs = kieservices.newkiefilesystem(); fileinputstream fis = new fileinputstream( "simple.drl" ); kfs.write( "src/main/resources/simple.drl", kieservices.getresources().newinputstreamresource( fis ) ); kiebuilder kiebuilder = kieservices.newkiebuilder( kfs ).buildall(); results results = kiebuilder.getresults(); if( results.hasmessages( message.level.error ) ){ system.out.println( results.getmessages() ); throw new illegalstateexception( "### errors ###" ); } kiecontainer kiecontainer = kieservices.newkiecontainer( kieservices.getrepository().getdefaultreleaseid() ); kiebase kiebase = kiecontainer.getkiebase(); kiesession = kiecontainer.newkiesession(); }
java nullpointerexception drools
No comments:
Post a Comment