Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
升级到Java 7时出现Drools规则编译错误_Java_Maven_Drools - Fatal编程技术网

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

升级到Java 7时出现Drools规则编译错误,java,maven,drools,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 e

我在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_主页和pom.xml。它应该从那里获得Java源代码级别,对吗?

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


Java8的原因是drools可以识别java版本1.6、1.7,但不能识别java版本1.8,默认为1.6。我怀疑drools 5.5(旧版)在java 7中也有同样的问题。

结果表明drools使用Eclipse JDT编译器编译规则。升级JDT版本成功了。但是,如果失败,升级Drools版本也可能有帮助。

这似乎没有帮助。使用的maven/jdt版本有什么不同吗?是的,我是对的。是JDT版本导致了这个问题。解决了的。谢谢你的帮助!在我的例子中,我的项目
pom.xml
硬编码
org.eclipse.jdt.core.compiler:ecj
对版本
4.3.1
的依赖性。在将drools升级到最新版本7.13.0.Final之后,我遇到了类似的错误(在第一次运行“drools code”时,很奇怪)。在删除我的
pom.xml
中硬编码的
org.eclipse.jdt.core.compiler:ecj
依赖项后(只需让drools决定使用哪个ecj版本,即
4.6.1
),此错误得到修复。