Issue
I got the following exception when trying to create a scoreManager :
java.lang.IllegalStateException: The solutionClass (class my.package.MySolution) has been specified as a solution in the configuration, but does not have a @PlanningSolution annotation.
However, the MySolution class does have the @PlanningSolution annotation, and the xml config file used looks like this :
<solver>
...
<solutionClass>my.package.MySolution</solutionClass>
<entityClass>my.package.MyAssignment</entityClass>
...
</solver>
But when calling the SolverFactory.createFromXmlResource like this :
SolverFactory<MySolution> solverFactory = SolverFactory.createFromXmlResource("solver/myRosteringSolverConfig.xml");
var scoreManager = ScoreManager.create(solverFactory);
I got the mentioned exception. Which does not make sense, because 1) the config use the same solutionClass as used by the SolverFactory and 2) the class is annotated...
Solution
The class cast exception is probably because it's loading the same @Planningsolution
class from two different jars.
Use optaplanner-spring-boot-starter
to avoid such classloading issues.
Answered By - Geoffrey De Smet
Answer Checked By - Candace Johnson (JavaFixing Volunteer)