【问题标题】:drools rule compilation error only a type can be imported. resolves to a packagedrools 规则编译错误,只能导入一个类型。解析为一个包
【发布时间】:2020-11-30 20:40:58
【问题描述】:

我正在使用 kie-maven-plugin 将所有规则编译为 KJAR

在我运行maven命令mvn clean install -DgenerateModel=YES后,出现如下编译错误:

[WARNING] ClassNotFoundException occured!
java.lang.ClassNotFoundException: Unable to find class 'com.rules.engine.service.RuleValidationErrorServiceImpl'

Error importing : 'com.model.rules.CodeRule'
Rule Compilation error : [Rule name='1.1.a']
    com/rule2/Rule_1$u46$1$u46$a2059806722.java (2:38) : Only a type can be imported. com.model.rules.CodeRule resolves to a package
    com/rule2/Rule_1$u46$1$u46$a2059806722.java (7:417) : $responseCodeRule cannot be resolved
    com/rule2/Rule_1$u46$1$u46$a2059806722.java (7:444) : ruleValidationErrorService cannot be resolved
    com/rule2/Rule_1$u46$1$u46$a2059806722.java (8:487) : $responseCodeRule cannot be resolved

但奇怪的是,即使出现这些编译错误,构建也是成功的。有一个将所有这些规则编译到类中创建的 jar。

我已经进行了很多搜索,但仍然无法弄清楚。任何可能有这种经验的人请帮助我解决这些编译错误。非常感谢!

【问题讨论】:

    标签: java drools kie


    【解决方案1】:

    这肯定看起来像是可执行模型编译器编译的一个bug,你能检查一下KJAR中是否生成了Rule_1$u46$1$u46$a2059806722.java的.class文件吗?

    您也可以使用jar tf kiejarname.jar 查看文件

    同时,您能否为我们提供这些规则的复制器?

    非常感谢

    【讨论】:

    • .class 文件 Rule_1$u46$1$u46$a2059806722.java 没有生成。但我确实看到那些生成了,在规则编译错误中无法解决。 DomainClassesMetadata54A9BC2A041F7030E8612ADC37BDA020$com_model_rules_ResponseCodeRule_Metadata.class DomainClassesMetadata5CF524AE74C12EA1CEED7DD3C4DB042E$com_rules_engine_service_RuleValidationErrorServiceImpl_Metadata.class。以后会写一个示例代码在这里分享。
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 2015-10-02
    • 2017-12-20
    • 2013-04-04
    • 2016-06-09
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多