1

我们正在将 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 文件。

非常感谢。

4

2 回答 2

3

检查类 com.svc.User 中属性模板的 getter。它必须遵守约定

public {OBJECT_TYPE} getTemplate(){ return template; }

这种类型的错误通常意味着它找不到具有此名称的方法(在这种情况下为 template()),这通常意味着属性的 getter 存在一些问题。

于 2016-09-02T14:46:52.817 回答
0

我遇到了同样的错误,但我的问题(我最终解决了)是我已将我的变量(在你的情况下为“模板”)声明为静态变量。所以 get 方法也是静态的(我使用了 Eclipse 的自动 getter 和 setter 生成)。一旦我摆脱了静态修饰符,我的规则就可以正常工作。

于 2019-05-21T13:31:45.307 回答