升级到Java 7时Drools规则编译错误

时间:2014-05-23 10:30:35

标签: java maven drools

我在我的Java项目中使用Drools(5.5.0)规则(使用maven 2.2.1管理)。它在Java 6(1.6.0_45)中运行良好,但是当我转向Java 7(1.7.0_51)并构建时,某些规则会产生规则编译错误,如下所示:

Rule Compilation error : [Rule name='SampleRuleName']
    com/sample/event/rules/simple/Rule_SampleRuleName46467274.java (2:486) : Syntax error, static imports are only available if source level is 5.0
    com/sample/event/rules/simple/Rule_SampleRuleName46467274.java (2:500) : The import com.sample.event.rules.simple.TransformEvent.transformEvent cannot be resolved
    com/sample/event/rules/simple/Rule_SampleRuleName46467274.java (7:1082) : The method transformEvent(TransformedEventCallBackHandler, EventTemplate, FirmwareEvent) is undefined for the type Rule_SampleRuleName46467274

"静态导入仅在源级别为5.0"错误表明drools编译器设置的源级别小于5,但为什么会这样做呢?我已经更新了我的JAVA_HOME和我的pom.xml。应该从那里获取Java源代码级别,对吗?

2 个答案:

答案 0 :(得分:1)

升级到Drools 6,这个问题在那里修复了。我们最近使用Drools 6.0遇到了类似的Java 8问题,它已经修复了6.1(以及6.0的最新版本)。

java 8的原因是drools识别java版本1.6,1.7,但不识别1.8,此时它默认为1.6。我怀疑drools 5.5(旧的)对java 7有同样的问题。

答案 1 :(得分:1)

原来Drools使用Eclipse JDT编译器来编译规则。升级JDT版本就可以了。但是,如果失败,升级Drools版本也可能会有所帮助。