Optaplanner v7升级v8.14整合Spring Boot启动报solverManager Bean创建异常
问题原因
你遇到的报错是OptaPlanner 8.x版本默认启用的注解索引机制导致的,和跨模块存放配置、实体类的架构没有适配问题。
OptaPlanner从8.x版本开始为了提升启动速度,对@PlanningSolution、@PlanningEntity等核心注解添加了@Indexed标记,框架启动时优先读取注解索引文件识别带注解的类,不会全量扫描类路径。你存放MySolution的my-roster模块没有配置对应的注解处理器,不会生成索引文件,因此OptaPlanner识别不到类上的@PlanningSolution注解。
解决方案
按优先级从高到低选择以下任意一种即可:
- 给my-roster模块添加OptaPlanner注解处理器依赖,版本和你引入的optaplanner-spring-boot-starter版本保持一致:
// my-roster模块的build.gradle依赖配置 dependencies { // 原有依赖保留 annotationProcessor 'org.optaplanner:optaplanner-core:8.14.0.Final' }
添加后重新编译my-roster模块,确保编译输出的classes/META-INF/services目录下存在注解索引文件即可。
- 如果是临时排查问题,可添加JVM启动参数关闭强制索引校验,启动时OptaPlanner会 fallback 到全类路径扫描:
-Doptaplanner.annotationIndexRequired=false
- 额外检查确认
@PlanningSolution注解的导入包是否正确,8.x版本的正确包路径为org.optaplanner.core.api.domain.solution.PlanningSolution,避免导错旧版本的遗留包。
内容的提问来源于stack exchange,提问作者Cromm
相关产品推荐
相关产品推荐

