我们正在将drools版本从5.x迁移到6.4并使用了我们之前使用的所有类和方法,除了编译问题,例如移动到新包等。
当我们在maven中构建DT文件(xls)时遇到了以下问题。
[ERROR] ## Errors [Unable to Analyse Expression template != null:
[Error: unable to resolve method using strict-mode: com.svc.User.template()]
[Near : {... template != null ....}]
注 - 用户类遵循Java Bean标准。
我也尝试禁用maven方言,如下所示
KnowledgeBuilderConfiguration kConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null,
classLoader);
kConf.setProperty("drools.dialect.mvel.strict", "false");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kConf);
但是发生了同样的错误。请帮我解决,我不确定,这与方言或需要更改的DT文件有关。
非常感谢。
答案 0 :(得分:1)
检查类com.svc.User中的getters属性模板。它必须遵循惯例
public {OBJECT_TYPE} getTemplate(){
return template;
}
这种类型的错误通常意味着它找不到具有此名称的方法(在本例中为template()),这通常意味着attibute的getter存在一些问题。
答案 1 :(得分:0)
我遇到了同样的错误,但是我的问题(最终解决了)是我将变量(在您的情况下为“模板”)声明为静态变量。 因此,get方法也是静态的(我使用了Eclipse的自动getter和setter生成)。一旦摆脱了static修饰符,我的规则就可以正常工作。