blacksmith

  博客园  :: 首页  :: 新随笔  ::  :: 订阅 订阅  :: 管理

学习Drools的Examples时,Drools的例子程序分为3大目录存放

drools-examples/src/main/java                            --java源程序

drools-examples/src/main/resources                    --Drools规则

drools-examples/target/classes                           --目标程序输出

 

在Eclipse中创建的Drools项目中,默认目录结构是:

./src/main/java                            --java源程序

./src/main/rules                           --Drools规则

./bin                                           --目标程序输出

 

当将例子中的Drools规则文件copy到自己的项目rules目录下,没有按照drl中的Package进行目录结构组织时,执行例子程序报错:

Exception in thread "main" java.lang.NullPointerException

at java.io.Reader.<init>(Unknown Source)

at java.io.InputStreamReader.<init>(Unknown Source)

at org.drools.examples.state.StateExampleUsingSalience.main(StateExampleUsingSalience.java:39)

解决方法:

方法1.将main 程序中的规则加载语句修改下,补充getClassLoader() 即可:

builder.addPackageFromDrl( new InputStreamReader( StateExampleUsingSalience.class.getResourceAsStream( "StateExampleUsingSalience.drl" ) ) );

builder.addPackageFromDrl( new InputStreamReader( StateExampleUsingSalience.class.getClassLoader().getResourceAsStream( "StateExampleUsingSalience.drl" ) ) );

 

方法2.

按照规则文件(drl)中的Package,将规则文件放到该目录结构中,即可。

 

posted on 2012-04-21 15:47  black smith  阅读(2772)  评论(0编辑  收藏  举报