项目集成了Drools,启动的时候报了Unable to build index of kmodule.xml日志,但是没提示错误
等调用规则引擎的时候,出现了异常:
Unknown Kiesession name:
先说结论,项目中的jar包冲突导致xercesImpl包版本不对。正常这个包应该是2.9.1
结果用了2.6.2。
我这里用的方案是 在项目的启动main方法中加了一行代码
public static void main(String[] args) {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
SpringApplication.run(Application.class, args);
}
排查过程:
首先是调整了日志 打出是哪个类输出的那行日志:
2022-11-15 20:00:44.959 [INFO ] org.drools.compiler.kie.builder.impl.ClasspathKieProject.notifyKieModuleFound[133 line] - Found kmodule: file:/C:/Users/Ding_haoqi/IdeaProjects/hiws/AntibioticsRecommend/target/classes/META-INF/kmodule.xml
2022-11-15 20:00:45.167 [ERROR] org.drools.compiler.kie.builder.impl.ClasspathKieProject.discoverKieModules[126 line] - Unable to build index of kmodule.xml url=file:/C:/Users/Ding_haoqi/IdeaProjects/hiws/AntibioticsRecommend/target/classes/META-INF/kmodule.xml
可以看到是org.drools.compiler.kie.builder.impl.ClasspathKieProject.discoverKieModules
进入这个类看到是101行打印的这条日志
但是日志没有打印全,var10的内容没有获取到,只能在93行的地方打个断点,然后debug启动
启动执行到93行之后,继续执行就会跳入到catch中,可以看到错误原因:
orgapache xerces,axp.DocumentBuilderFactorylmpl,setFeature(ljava/lana/String?Z)V
这就更近了一步了:
结合着这篇文章,试下在项目启动的时候,添加一行代码。
能正常运行了。
后续考虑如何调整maven解决这个问题。