我正在尝试实施drools决策表。当我实现自己的示例代码时,我得到以下错误: java.lang.RuntimeException:创建KieBase时出错。
我的Eclipse IDE控制台中可见的错误是:
java.lang.RuntimeException:创建KieBase时出错[Message [id = 1,kieBase = patient,level = ERROR,path = PatientDecisionTable.xls,line = 10,column = 0 text = [ERR 101]第10:21行输入''没有可行的选择,消息[id = 2,kieBase = patient,level = ERROR,path = PatientDecisionTable.xls,line = 10,column = 0 text = [ERR 101]第10:81行输入'']没有可行的选择,消息[id = 3,kieBase = patient,level = ERROR,path = PatientDecisionTable.xls,line = 0,column = 0 text = Parser返回null包]] 在org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:557) at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:682) 在org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:650) 在com.Lab.Genomics.Run.PatientRun.main(PatientRun.java:15)
我的主要方法包含在以下类中:
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import com.Lab.Genomics.model.Patient;
public class PatientRun {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
KieServices ks= KieServices.Factory.get();
KieContainer kContainer=ks.getKieClasspathContainer();
KieSession kSession= kContainer.newKieSession("ksession-patient");
Patient patientObject= new Patient();
patientObject.setBcConfirmed(1);
patientObject.setBcEarlyStage(1);
patientObject.setMetastatisSymptom(1);
patientObject.setName("Sumit");
patientObject.setPatientId(01);
kSession.insert(patientObject);
kSession.fireAllRules();
}catch(Exception e){
e.printStackTrace();
}
}
}
我无法找到决策表中出现的错误。当我运行main方法时,我得到如上所述的错误。
我在这里找到了drools决策表的问题decision table error,但这不是我检查的情况。
我尝试过搜索并尝试过。任何参考或帮助都非常感谢。
答案 0 :(得分:1)
默认使用Excel提供的引号。你在println调用中的字符串周围有它们: 左双引号,U + 201C 右双引号,U + 201D
如果我在Excel单元格中键入这些键击:' A' ' ' ' S' ......':' ' ' '"' '○' ......' e' ' E' '"'我会看到这个:
A string: “one two three”
现在我将其复制粘贴到文本文件中并在其上运行转储程序:
0000000 41 20 73 74 72 69 6e 67 3a 20 e2 80 9c 6f 6e 65
0000020 20 74 77 6f 20 74 68 72 65 65 e2 80 9d 0a
参见UTF-8编码:引号的0xE2 0x80 0x9C和0xE2 0x80 0x9D,它们不是DRL代码中允许的编码。请务必使用引号,代码点U + 0022。就是这样:->"<-