我正在关注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
为了确保我在同一个项目中使用以下代码进行测试,它会按预期运行。
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。 有什么想法或建议吗?