2013-05-27 2 views
2

나는 졸음으로 시작하고 있습니다. 클래스 경로 오류가 발생합니다. 확실하지, 내가 여기서 뭘 놓치고 있는지. 어떤 힌트?DRL 파일이 존재하지 않아 열 수 없습니다.

메인 클래스

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
kbuilder.add(ResourceFactory.newClassPathResource("sample.drl"),ResourceType.DRL); 
KnowledgeBase kbase = kbuilder.newKnowledgeBase(); 
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); 
Account account = new Account(200); 
account.withdraw(100); 
ksession.execute(account); 

}

Sample.drl

가에 생성 // : 5 월 27 일 2013

package com.rules 

//list any import classes here. 
import com.model 


//declare any global variables here 

rule "accountBalanceAtLeast" 

    when 
     //conditions 
     $account : Account(balance < 100) 
    then 
     //actions 
     System.out.println("Warning, Running out of money."); 

end 

단점 OLE 오류

enter image description here

프로젝트 설정 enter image description here

답변

7

난 당신이 다음 src/main/resourcessample.drl를 이동하는 것이 좋습니다 사용 :

kbuilder.add(ResourceFactory.newClassPathResource("sample.drl"),ResourceType.DRL);

당신이 당신을 넣어하기로 결정하는 경우 다른 폴더에 drl 파일 src/main/resources 내부의이 salesRulesvalidationRules 말을하자, 당신은 사용해야합니다

kbuilder.add(ResourceFactory.newClassPathResource("salesRules/rules.drl"),ResourceType.DRL); kbuilder.add(ResourceFactory.newClassPathResource("validationRules/rules.drl"),ResourceType.DRL);

을 여전히 자바 패키지 내부에 DRL 파일을 원한다면, 다음이 시도 :

kbuilder.add(ResourceFactory.newClassPathResource("com/rules/sample.drl"),ResourceType.DRL);

도움이되기를 바랍니다.

0

일반적으로 참조 된 파일은 원본 디렉터리 아래에 보관해야합니다. 예를 들어 'src'아래의 일반 파일과 'test'아래의 테스트 파일. 공통 상위 디렉토리를 사용하는 코드와 공유해야합니다. 그냥 도움을

1

: 만약 어떤 하나의 코드를 사용 :

KieFileSystem kieFileSystem = kieServices.newKieFileSystem();  
Resource resource = kieResources.newClassPathResource("EvaluationDossier.drl"); 
String resourcepath = "src/main/resources/rules" + "/" + "RulesCompiled.drl"; 
kieFileSystem.write(resourcepath, resource); 

이 예외에 직면 : 몇 가지 검색 후

Exception in thread « main » java.lang.RuntimeException: Unable to get LastModified for ClasspathResource 
.......................... 
Caused by: java.io.FileNotFoundException: ‘EvaluationDossier.drl’ cannot be opened because it does not exist 

것은 내가 pom.xml 파일

에 다음 줄을 추가하여이를 해결
<build> 
     <resources> 
      <resource> 
       <directory>src/main/resources/rules</directory> 
      </resource> 
      <resource> 
       <directory>src/main/java</directory> 
      </resource> 
     </resources> 
    </build> 
관련 문제