最近由于项目需要开始使用Drools规则引擎,花了一天时间将Drools看了个大概,整体感觉还是非常好用的。不过在使用的过程中出现了各种问题,现将遇到的一些问题及解决方法记录如下:
1.在Myeclipse中运行时,没有任何错误,当一旦打包为runnable jar file后执行,报错如下:
[27,7]: [ERR 101] Line 27:7 no viable alternative at input ''
[27,17]: [ERR 101] Line 27:17 no viable alternative at input ''
[39,7]: [ERR 101] Line 39:7 no viable alternative at input ''
[39,17]: [ERR 101] Line 39:17 no viable alternative at input ''
[39,21]: [ERR 101] Line 39:21 no viable alternative at input ''
[39,23]: [ERR 101] Line 39:23 no viable alternative at input ''
[39,25]: [ERR 101] Line 39:25 no viable alternative at input ''
[63,7]: [ERR 101] Line 63:7 no viable alternative at input ''
[63,17]: [ERR 101] Line 63:17 no viable alternative at input ''
[4,1]: [ERR 107] Line 4:1 mismatched input 'when' expecting one of the following
tokens: '[package, import, global, declare, function, rule, query]'.
rule "
[0,0]: Parser returned a null Package
java.lang.IllegalArgumentException: Could not parse knowledge.
折腾了好久,没有找到错误,最后将rule名改为英语该错误即解决了,原来如此。
2.所有rule名改为英文后,依然继续报错如下:
[4,1]: [ERR 107] Line 4:1 mismatched input 'when' expecting one of the following
tokens: '[package, import, global, declare, function, rule, query]'.
rule "
[0,0]: Parser returned a null Package
java.lang.IllegalArgumentException: Could not parse knowledge.
好吧,表示压力很大,又折腾了半天,最后发现,居然是因为rule中的注释有带中文,干掉,再运行,OK了。崩溃之。
总结:rule中不要带中文就万事大吉了