尝试在我们的网络服务器中使用 Drools 时,我们遇到了同样的问题
嵌入式 Grizzly http 服务器。
我们还需要添加 drools-compiler 依赖项,但这并不能解决问题。
由于类路径上有多个来自不同依赖项的 kie.conf 文件,因此 uber-jar 最终只有一个,然后缺少要加载的类的定义。
除了这些来自 drools-core kie.conf 的条目:
org.kie.api.io.KieResources = org.drools.core.io.impl.ResourceFactoryServiceImpl
org.kie.api.marshalling.KieMarshallers = org.drools.core.marshalling.impl.MarshallerProviderImpl
org.kie.api.concurrent.KieExecutors = org.drools.core.concurrent.ExecutorProviderImpl
我们将这些行从 drools-compiler 添加到我们的 uber-jar kie.conf:
org.kie.api.KieServices = org.drools.compiler.kie.builder.impl.KieServicesImpl
org.kie.internal.builder.KnowledgeBuilderFactoryService = org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl
否则 KieServices 未加载,KieServices.Factory.get() 返回 null。
我们随后使用
修改构建的 jar
jar uf myjar.jar META-INF/kie.conf
修改包含的 kie.conf 文件。我们找不到一个干净的 Maven 集成解决方案。欢迎任何建议...