kie-server-client与optaplanner-spring-boot-starter依赖冲突求助
问题:同时引入kie-server-client与optaplanner-spring-boot-starter的兼容问题
当同时引入以下两个Maven依赖时:
<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> </dependency> <dependency> <groupId>org.optaplanner</groupId> <artifactId>optaplanner-spring-boot-starter</artifactId> </dependency>
出现Spring上下文初始化异常:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'solverManager' defined in class path resource [org/optaplanner/spring/boot/autoconfigure/OptaPlannerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'solverManager' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solverFactory' defined in class path resource [org/optaplanner/spring/boot/autoconfigure/OptaPlannerAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.optaplanner.core.api.solver.SolverFactory]: Factory method 'solverFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/drools/core/reteoo/CoreComponentFactory
解决方案
1. 统一KIE生态依赖版本
kie-server-client和OptaPlanner同属KIE技术栈,版本不匹配是引发依赖冲突的核心原因,必须确保两者使用完全一致的版本:
- 先执行
mvn dependency:tree命令,查看OptaPlanner starter对应的KIE版本 - 为kie-server-client指定相同版本:
<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> <version>${optaplanner.version}</version> <!-- 与OptaPlanner版本保持一致 --> </dependency> <dependency> <groupId>org.optaplanner</groupId> <artifactId>optaplanner-spring-boot-starter</artifactId> <version>${optaplanner.version}</version> </dependency>
2. 排除冲突依赖(按需使用)
若统一版本后仍存在依赖冲突,可通过Maven依赖树定位冲突的drools相关依赖,在kie-server-client中排除:
<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> <version>${optaplanner.version}</version> <exclusions> <exclusion> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> </exclusion> <!-- 根据实际冲突情况添加其他排除项 --> </exclusions> </dependency>
3. 手动补充缺失依赖
异常提示缺少org.drools.core.reteoo.CoreComponentFactory,说明drools-core依赖未被正确引入。若统一版本后仍缺失,可手动添加该依赖:
<dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>${optaplanner.version}</version> </dependency>
内容的提问来源于stack exchange,提问作者Fotios
相关产品推荐
相关产品推荐

