我在Eclipse中有一个非常简单的Drools项目,它运行得很好,但是当我打开或单击我的.drl文件时,会在Eclipse中弹出以下错误:
发生错误。有关详细信息,请参阅错误日志。不能将org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction转换为org.drools.runtime.rule.AccumulateFunction
当我点击OK并再次运行程序时,它仍然运行良好。每当我从.drl文件中单击并单击back时,错误再次弹出。Eclipse日志具有以下堆栈跟踪:
!加入org.eclipse.ui.workbench 4 2 2016-08-25 23:35:24.144 !从插件"org.eclipse.ui.workbench“调用代码时出现了消息问题。 !堆栈0 java.lang.ClassCastException:不能将org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction转换为org.drools.compiler.PackageBuilderConfiguration.loadAccumulateFunction(PackageBuilderConfiguration.java:530) at org.drools.compiler.PackageBuilderConfiguration.buildAccumulateFunctionsMap(PackageBuilderConfiguration.java:479) at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:194) at org.drools.compiler.PackageBuilderConfiguration.(PackageBuilderConfiguration.java:170) at org.drools的org.drools.runtime.rule.AccumulateFunction.eclipse.DroolsEclipsePlugin.generateParsedResource(DroolsEclipsePlugin.java:612) at org.drools.eclipse.DroolsEclipsePlugin.parseResource(DroolsEclipsePlugin.java:515) at org.drools.eclipse.editors.outline.RuleContentOutlinePage.initRules(RuleContentOutlinePage.java:279) at org.drools.eclipse.editors.outline.RuleContentOutlinePage.update(RuleContentOutlinePage.java:159) at org.drools.eclipse.editors.outline.RuleContentOutlinePage.createControl(RuleContentOutlinePage.java:133)
在这里看到整个堆栈跟踪:http://pastebin.com/hJK1Cs03
我的节目:
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class GhostFactTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
FruitFact f1 = new FruitFact(1, "APPLE", "RED");
FruitFact f2 = new FruitFact(2, "APPLE", "GREEN");
kSession.insert(f1);
kSession.insert(f2);
kSession.fireAllRules();
System.out.println("\n********************\nSUCCESS!\n********************");
} catch (Throwable t) {
t.printStackTrace();
}
}
}.drl根本不需要有任何规则来抛出错误。编译时或运行时没有错误。
我有Drools 6.0-4.0,for作为单独的Drools运行时安装,除了Drools 6.0.Final之外,我看到了每个版本都存在这个问题。我正在运行Java7。我还可以运行一个非常类似的程序Drools5.0,最后没有任何问题。
假设程序成功地实现了预期的行为,并且即使.drl是空的,也会引发错误,我倾向于认为这是和我的项目设置中的一个问题。有没有人对如何解决这一问题有任何指导?提前谢谢。
发布于 2016-09-26 23:40:19
问题是我正在使用Drools 5.5.0。最后,Eclipse插件与Drools 6项目一起使用。当我升级到Drools 6.4.0.最后的Eclipse插件后,问题就消失了。
https://stackoverflow.com/questions/39160128
复制相似问题