我在我的 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 源代码级别,对吗?
最佳答案
升级到 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 也有同样的问题。
关于java - 升级到 Java 7 时出现 Drools 规则编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23826895/