java.lang.IllegalStateException 在 Spring 上为 OptaPlanner 创建 ScoreManager

java.lang.IllegalStateException when creating a ScoreManager on Spring for OptaPlanner

我在尝试创建 scoreManager 时遇到以下异常:

java.lang.IllegalStateException: solutionClass (class my.package.MySolution) 已在配置中指定为解决方案,但没有@PlanningSolution 注解。

但是,MySolution class 确实有 @PlanningSolution 注释,并且使用的 xml 配置文件如下所示:

<solver>
   ...
  <solutionClass>my.package.MySolution</solutionClass>
  <entityClass>my.package.MyAssignment</entityClass>
   ...
</solver>

但是当这样调用 SolverFactory.createFromXmlResource 时 :

        SolverFactory<MySolution> solverFactory = SolverFactory.createFromXmlResource("solver/myRosteringSolverConfig.xml");

        var scoreManager = ScoreManager.create(solverFactory);

我遇到了上述异常。这没有意义,因为 1) 配置使用与 SolverFactory 相同的 solutionClass 和 2) class 被注释...

class 转换异常可能是因为它从两个不同的 jar 加载相同的 @Planningsolution class。

使用 optaplanner-spring-boot-starter 避免此类 class 加载问题。