通过sbt assembly生成的Fat Jar运行Drools Kie项目报错求助
解决Drools KieSession找不到及XML支持缺失问题
问题根源
错误日志已经给出明确提示:
- 缺少Drools XML支持模块,导致无法解析
kmodule.xml文件 - 由于
kmodule.xml未被正确加载,KieContainer无法找到名为DroolDummyKS的KieSession,最终触发报错
修复步骤
1. 添加Drools XML支持依赖
在项目的build.sbt中补充drools-xml-support依赖,版本号需与你当前使用的Drools版本保持一致:
libraryDependencies += "org.drools" % "drools-xml-support" % "你的Drools版本号" % Runtime
示例(若使用7.74.0.Final版本):
libraryDependencies += "org.drools" % "drools-xml-support" % "7.74.0.Final" % Runtime
2. 校验kmodule.xml配置
确保src/main/resources/META-INF/kmodule.xml中正确定义了DroolDummyKS会话,示例配置如下:
<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> <kbase name="DroolDummyKB" packages="你的规则文件包路径"> <ksession name="DroolDummyKS"/> </kbase> </kmodule>
注意点:
packages需指向存放Drools规则文件(.drl)的实际包路径- KieSession名称需与代码中
newKieSession("DroolDummyKS")的参数完全匹配(大小写敏感)
3. 确保sbt assembly打包完整依赖
检查assembly.sbt中的打包配置,避免误排除drools-xml-support或其依赖的XML解析类库(如jaxb-api、stax-api等),确保所有必要依赖都被打入Fat Jar。
验证操作
- 重新执行
sbt assembly生成新的Fat Jar - 运行Jar文件,确认日志中不再出现XML支持缺失的错误
- 检查KieSession是否能正常初始化
内容的提问来源于stack exchange,提问作者GSerum_
相关产品推荐
相关产品推荐

