Drools表示,即使使用Java 8,功能也需要1.5或更高的源级别

时间:2016-11-17 21:14:14

标签: java eclipse drools

我正在关注Drools教程here。一切似乎都按预期工作,直到我在third lesson中使用for循环来展示collect:

rule "More then 2 CashFlow Line"
    when
        $c : Account( $acc : accountNo )
        $p : AccountingPeriod ($sDate : startDate ,$eDate : endDate )
        $number : ArrayList(size >= 2 )
              from collect( CashFlow( mvtDate >= $sDate && mvtDate  <= $eDate,accountNo == $acc ) )

    then
        showResult.showText("Found more than 2 CashFlow Lines");
        showResult.showText("<<<<<<<<<<");
        for (Object ff : $number){
            showResult.showText(ff.toString());
        }
        showResult.showText(">>>>>>>>>>>>>>>>");
end

JUnit测试失败了这个错误:

java.lang.RuntimeException: Error while creating KieBase[Message [id=1, level=ERROR, path=lesson3.drl, line=43, column=0
 text=Rule Compilation error Syntax error, 'for each' statements are only available if source level is 1.5 or greater]]

我已经检查了我的构建路径和编译器复杂程度,均为1.8

JRE: Showing JRE set to 1.8

编译器: Showing Compiler Compliance set to 1.8

为了确保我在同一个项目中使用以下代码进行测试,它会按预期运行。

package droolscours;

public class Sample {

    public static void main(String[] args){
        int[] testValues = new int[]{1, 2, 3};

        for(int value : testValues){
            System.out.println("Number: " + value);
        }
    }
}

我发现了类似的问题,但它们与使用旧版本的Drools(我正在使用6.5.0)或与旧版本的WildFly(我根本不使用)不兼容。

我正在使用Eclipse Neon 4.6.1。 有什么想法或建议吗?

0 个答案:

没有答案