我正在修改 optaplanner-webexamples vrp。所以我有點(diǎn)使用 spring-boot,我編輯了一些模型等。但是在運(yùn)行 solve 時,它會在 VehicleRoutingSolution 類上產(chǎn)生 ClassCastExceptionjava.lang.ClassCastException: id.co.asyst.vrp.core.solution.VehicleRoutingSolution cannot be cast to id.co.asyst.vrp.core.solution.VehicleRoutingSolutionat org.optaplanner.core.impl.domain.common.accessor.LambdaBeanPropertyMemberAccessor.executeGetter(LambdaBeanPropertyMemberAccessor.java:120)at org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor.getScore(SolutionDescriptor.java:1071)at org.optaplanner.core.impl.score.director.AbstractScoreDirector.cloneSolution(AbstractScoreDirector.java:212)at org.optaplanner.core.impl.solver.scope.DefaultSolverScope.setWorkingSolutionFromBestSolution(DefaultSolverScope.java:230)at org.optaplanner.core.impl.solver.AbstractSolver.solvingStarted(AbstractSolver.java:75)at org.optaplanner.core.impl.solver.DefaultSolver.solvingStarted(DefaultSolver.java:210)at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:190)at id.co.asyst.vrp.rest.cdi.VehicleRoutingSolverManager.lambda$solve$1(VehicleRoutingSolverManager.java:105)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)at java.util.concurrent.FutureTask.run(FutureTask.java)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)我哪里做錯了?我直接從 optaplanner-webexamples 獲取的大部分代碼對模型進(jìn)行了很少的修改。大多只是表關(guān)系。
3 回答

慕后森
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
我想出的最佳解決方案是使用Spring Boot 文檔中推薦的上下文類加載器。使用上下文類加載器作為 的第二個參數(shù)SolverFactory.createFromXmlResource()。例如:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
SolverFactory<VehicleRoutingSolution> sf = SolverFactory.createFromXmlResource(
"org/optaplanner/examples/vehiclerouting/solver/vehicleRoutingSolverConfig.xml",
classLoader
);
與我之前的回答一樣,這與開發(fā)人員工具一起使用,因此您可以留spring-boot-devtools在 POM 中并繼續(xù)使用自動重啟功能。
添加回答
舉報(bào)
0/150
提交
取消