升级至kie-api-7.45.0.Final后KnowledgeBase类缺失,求替代类
Drools 7.45.0.Final 弃用类替代方案
因为你没贴出具体报错的类名,这里列出Drools升级到7.x版本后最常见的弃用类及替代方案:
org.drools.core.impl.KnowledgeBaseFactory→ 用org.kie.api.KieServices替代,通过KieServices.Factory.get()获取实例,再创建KieBase、KieSession等核心对象:// 旧写法 KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); // 新写法 KieServices kieServices = KieServices.Factory.get(); KieContainer kContainer = kieServices.getKieClasspathContainer(); KieBase kbase = kContainer.getKieBase();StatefulKnowledgeSession/StatelessKnowledgeSession→ 分别替换为org.kie.api.runtime.KieSession(有状态会话)和org.kie.api.runtime.StatelessKieSession(无状态会话):// 旧有状态会话创建方式 StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession(); // 新有状态会话创建方式 KieSession session = kbase.newKieSession();KnowledgeBuilder→ 替换为org.kie.api.builder.KieBuilder,配合KieFileSystem使用:// 旧写法 KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); // 新写法 KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); kfs.write(ResourceFactory.newClassPathResource("your-rules-file.drl")); KieBuilder kbuilder = kieServices.newKieBuilder(kfs).buildAll();
如果你的报错涉及其他类,把具体类名贴出来,我再给你对应替代方案。
内容的提问来源于stack exchange,提问作者shivani yadav
相关产品推荐
相关产品推荐

