2017-03-03 32 views
0

我從git中克隆了optaplanner-examples來學習如何爲我的問題案例實現庫。optaplanner-examples:解組器的配置ConfigResource

我修改了示例PassionAdmissionSchedule,我只想要沒有擺動的代碼。當我想啓動解算器時,我收到了錯誤消息。

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

行號:你解算器XML配置的25

檢查行號25。

這是無效的:

 <moveListFactoryClass> 
      test.BedDesignationPillarPartSwapMoveFactory 
     </moveListFactoryClass> 

這是有效的:

 <moveListFactoryClass>test.BedDesignationPillarPartSwapMoveFactory</moveListFactoryClass> 

假定存在與該包類的Java包測試。