class.getClassLoader() 问题

原文链接:http://www.cnblogs.com/xw-cnblogs/archive/2012/04/21/2461569.html class.getClassLoader() 问题

学习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 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/xw-cnblogs/archive/2012/04/21/2461569.html

上一篇:mahout从入门到放弃--安装(1)


下一篇:Wandb用起来,一行Python代码实现Keras模型可视化!