我从git中克隆了optaplanner-examples以了解如何为我的问题案例实现库。
我修改了示例PassionAdmissionSchedule,我只想要没有swing的代码。当我想启动求解器时,我收到了fllowing错误消息。
Exception in thread "main" java.lang.IllegalArgumentException: Unmarshalling of solverConfigResource (test/patientAdmissionScheduleSolverConfig.xml) fails.
at org.optaplanner.core.impl.solver.XStreamXmlSolverFactory.configure(XStreamXmlSolverFactory.java:114)
at org.optaplanner.core.api.solver.SolverFactory.createFromXmlResource(SolverFactory.java:90)
at test.PatientAdmissionScheduleApp.init(PatientAdmissionScheduleApp.java:29)
at test.PatientAdmissionScheduleApp.main(PatientAdmissionScheduleApp.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: com.thoughtworks.xstream.converters.ConversionException: Cannot load java class
test.BedDesignationPillarPartSwapMoveFactory
---- Debugging information ----
message : Cannot load java class
test.BedDesignationPillarPartSwapMoveFactory
class : java.lang.Class
required-type : java.lang.Class
converter-type : com.thoughtworks.xstream.converters.SingleValueConverterWrapper
wrapped-converter : com.thoughtworks.xstream.converters.extended.JavaClassConverter
line number : 25
class[1] : org.optaplanner.core.config.heuristic.selector.move.factory.MoveListFactoryConfig
converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2] : org.optaplanner.core.config.heuristic.selector.move.composite.UnionMoveSelect orConfig
class[3] : org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig
class[4] : org.optaplanner.core.config.solver.SolverConfig
version : 1.4.9
-------------------------------
求解器配置相同。
<?xml version="1.0" encoding="UTF-8"?>
<solver>
<!--<environmentMode>FAST_ASSERT</environmentMode>-->
<solutionClass>test.PatientAdmissionSchedule</solutionClass>
<entityClass>test.BedDesignation</entityClass>
<scoreDirectorFactory>
<scoreDrl>patientAdmissionScheduleScoreRules.drl</scoreDrl>
</scoreDirectorFactory>
<termination>
<secondsSpentLimit>300</secondsSpentLimit>
</termination>
<constructionHeuristic>
<constructionHeuristicType>WEAKEST_FIT_DECREASING</constructionHeuristicType>
</constructionHeuristic>
<localSearch>
<unionMoveSelector>
<changeMoveSelector/>
<!--<swapMoveSelector/>-->
<!--<pillarSwapMoveSelector/>-->
<moveListFactory>
<moveListFactoryClass>
test.BedDesignationPillarPartSwapMoveFactory
</moveListFactoryClass>
</moveListFactory>
</unionMoveSelector>
<acceptor>
<entityTabuSize>7</entityTabuSize>
</acceptor>
<forager>
<acceptedCountLimit>1000</acceptedCountLimit>
</forager>
</localSearch>
错误信息说,java无法加载类BedDesignationPillarSwapMoveFactory,但为什么呢?
答案 0 :(得分:0)
行号:25
检查解算器配置XML的第25行。
这是无效的:
<moveListFactoryClass>
test.BedDesignationPillarPartSwapMoveFactory
</moveListFactoryClass>
这是有效的:
<moveListFactoryClass>test.BedDesignationPillarPartSwapMoveFactory</moveListFactoryClass>
假设该包中有该类的java包测试。