2016-08-26 7 views
0

나는 완료 될 때까지 잘 실행 Eclipse에서 매우 간단한 Drools가 프로젝트를 가지고,하지만 난 열거 나 내 .drl 파일을 클릭하면, 다음과 같은 오류가 이클립스에서 팝업 :Drools가 - Drools가에서 ClassCastException이 6

오류가 발생했습니다. 자세한 내용은 오류 로그를 참조하십시오. 내가 확인을 공격하고 프로그램을 다시 실행하면 org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction은 여전히 ​​잘 실행, org.drools.runtime.rule.AccumulateFunction

으로 캐스팅 할 수 없습니다. .drl 파일을 클릭하고 다시 클릭 할 때마다 오류가 다시 나타납니다. !

ENTRY의 org.eclipse.ui.workbench 2016년 8월 25일 4 2 23 : 35 :! 플러그에서 코드를 호출 할 때 24.144

MESSAGE 문제가 발생 이클립스 로그는 다음 스택 트레이스를 갖는다 in : "org.eclipse.ui.workbench".

STACK 0 java.lang.ClassCastException가! org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction가 org.drools.compiler.PackageBuilderConfiguration.loadAccumulateFunction에서 org.drools.runtime.rule.AccumulateFunction 캐스트 할 수없는 (org.drools.compiler.PackageBuilderConfiguration.init (PackageBuilderConfiguration.java:194) org.drools.compiler에서 에서 org.drools.compiler.PackageBuilderConfiguration.buildAccumulateFunctionsMap (PackageBuilderConfiguration.java:479) 에서 PackageBuilderConfiguration.java:530) . PackageBuilderConfiguration. (PackageBuilderConfiguration.java:170) at org.drools.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) 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. 최종은 별도의 Drools 런타임으로 설치되었으며 Drools 6.0.0.Final을 제외한 모든 버전에서이 문제가 나타납니다. Java7을 실행 중입니다. 나는 Drools 5.5.0.Final과 비슷한 프로그램을 아무 문제없이 실행할 수 있습니다.

예상되는 동작과 함께 프로그램이 성공하고 .drl이 비어 있어도 오류가 발생하는 경우 Eclipse와 프로젝트 설정에 문제가 있다고 생각합니다. 누구든지이 문제를 해결하는 방법에 대한 지침이 있습니까? 미리 감사드립니다.

+0

귀하의 결론에 동의합니다. Eclipse 관련 문제이며, 귀하의 코드에는 아무런 문제가 없습니다.이 댓글을 찾을 수 있습니다 http://stackoverflow.com/questions/33347327/drools-6-3-error-when-using-java-8#comment54518686_33347327 다른 질문에 유용합니다, 같은 근본 원인이 나타납니다 - 런타임 Eclipse 설정이 잘못되었습니다. ? – tarilabs

답변

0

문제는 Drools 6 프로젝트에서 Drools 5.5.0.Final Eclipse 플러그인을 사용하고 있다는 것이 었습니다. Drools 6.4.0.Final Eclipse plug-in으로 업그레이드 한 후 문제가 해결되었습니다.