es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

java.lang.IllegalStateException al crear un ScoreManager en Spring para OptaPlanner.

Obtuve la siguiente excepción al intentar crear un scoreManager:

java.lang.IllegalStateException: Se ha especificado la solutionClass (clase my.package.MySolution) como solución en la configuración, pero no tiene una anotación @PlanningSolution.

Sin embargo, la clase MySolution sí tiene la anotación @PlanningSolution, y el archivo de configuración xml se ve así:

<solver>
   ...
  <solutionclass>my.package.MySolution</solutionclass>
  <entityclass>my.package.MyAssignment</entityclass>
   ...
</solver>

Pero al llamar a SolverFactory.createFromXmlResource de esta manera:

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

var scoreManager = ScoreManager.create(solverFactory);

Obtuve la excepción mencionada. Lo cual no tiene sentido, porque 1) la configuración utiliza la misma solutionClass que la usada por SolverFactory y 2) la clase está anotada…

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que pueda haber varias clases con el mismo nombre y paquete en diferentes ubicaciones en el proyecto, causando confusión y llevando a esta excepción.

    Para resolver este problema, intente especificar explícitamente la ubicación de la clase en el archivo de configuración del solucionador utilizando el nombre completo del paquete, de la siguiente manera:

    <solver>
       ...
      <solutionclass>com.example.my.package.MySolution</solutionclass>
      <entityclass>com.example.my.package.MyAssignment</entityclass>
       ...
    </solver>
    

    Como alternativa, intente limpiar y reconstruir el proyecto, y asegúrese de que se esté utilizando la versión correcta de la clase.

    Si el problema persiste, puede valer la pena verificar la versión de OptaPlanner que se está utilizando, ya que las versiones antiguas pueden tener errores relacionados con el uso de anotaciones.

Comments are closed.