当执行下面的代码时,Optaplanner会抛出NullPointerException。
SolverFactory<ScheduleSolution> solverFactory = SolverFactory.createFromXmlResource("scheduleSolverConfiguration.xml");
Solver<ScheduleSolution> a = solverFactory.buildSolver();
我使用的是ConstraintProvider,而不是直接使用drools。
<?xml version="1.0" encoding="UTF-8"?>
<solver>
<scanAnnotatedClasses/>
<scoreDirectorFactory>
<constraintProviderClass>ScheduleConstraintProvider</constraintProviderClass>
</scoreDirectorFactory>
<termination>
<secondsSpentLimit>10</secondsSpentLimit>
</termination>
</solver>
异常跟踪
Exception in thread "main" java.lang.NullPointerException
at org.optaplanner.core.impl.score.stream.drools.DroolsConstraintFactory.<init>(DroolsConstraintFactory.java:51)
at org.optaplanner.core.impl.score.director.stream.ConstraintStreamScoreDirectorFactory.<init>(ConstraintStreamScoreDirectorFactory.java:52)
at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildConstraintStreamScoreDirectorFactory(ScoreDirectorFactoryConfig.java:563)
at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:461)
at org.optaplanner.core.config.solver.SolverConfig.buildScoreDirectorFactory(SolverConfig.java:606)
at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:514)
at org.optaplanner.core.impl.solver.DefaultSolverFactory.buildSolver(DefaultSolverFactory.java:49)
optaplanner版本 - 7.36.0
我敢打赌,你的ConstraintProvider返回null,或者一个Constraint的数组,其中有些元素是null。
无论如何,在这种情况下,OptaPlanner应该给你一个更好的错误信息。请创建一个issue.redhat.com项目PLANNER。