2017-05-03 4 views
0

Ich versuche eine Lösung mit optaplanner zu erstellen, indem ich eine XML-Datei nach Ressource lade. Wenn ich es in einem Komponententest starte, funktioniert es gut. Aber wenn ich versuche, es auszuführen, wenn meine Spring-Boot-Anwendung ausgeführt wird, denke ich, dass es die Ressourcen nicht richtig liest.Optaplanner Spring-Boot Ressourcen laden Problem (funktioniert nur mit Komponententest)

Dies ist unsere Config XML-Datei

<!-- Domain model configuration --> 


<solutionClass>be.infofarm.backend.domain.Internship.solution.InternshipSolution</solutionClass> 
<entityClass>be.infofarm.backend.domain.Internship.Student</entityClass> 

<!--<environmentMode>FAST_ASSERT</environmentMode>--> 

<!-- Score configuration --> 
<scoreDirectorFactory> 
    <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> 

    <scoreDrl>InternshipCalculator.drl</scoreDrl> 
    <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> 
</scoreDirectorFactory> 

<constructionHeuristic> 
    <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType> 
</constructionHeuristic> 

<localSearch> 
    <forager> 
     <acceptedCountLimit>800</acceptedCountLimit> 
    </forager> 
</localSearch> 

<localSearch> 
    <acceptor> 
     <entityTabuSize>20</entityTabuSize> 
    </acceptor> 
</localSearch> 

<termination> 
    <secondsSpentLimit>10</secondsSpentLimit> 
</termination> 

+1

Willkommen bei StackOverflow! Leider gibt es hier nicht wirklich genug Informationen, um Ihnen zu helfen. Ich empfehle Ihnen, [Wie frage ich eine gute Frage] (http://stackoverflow.com/help/how-to-ask) durchzulesen, dann komme ich zurück und bearbeite deinen Beitrag, um weitere Informationen hinzuzufügen. – DaveyDaveDave

+0

Aktivieren Sie die 'DEBUG'-Protokollierung (siehe den entsprechenden Abschnitt im Abschnitt" optaplanner docs ") und prüfen Sie, ob Sie die gleiche Anzahl von Schritten (= Iterationen) ausführen. Wenn Sie die zwei Läufe vergleichen, sollte die Ausgabe dieselbe Punktzahl bei der gleichen Iteration haben. –

+0

Wir haben es auf DEBUG Protokollierung und wenn wir die 2 Iterationen vergleichen, gibt es einen signifikanten Unterschied. Beim Spring-Boot-Lauf gibt es wesentlich mehr LS-Schritte als beim Unit-Testlauf. Auch der Spring-Boot-Lauf addiert nicht den Soft-Score, den wir in unserer Drool-Datei initialisiert haben. Und wenn wir den Komponententest ausführen, addiert er nur einen Soft Score, den wir in unserer Drool-Datei initialisiert haben, aber er ignoriert die harten Einschränkungen. Wir haben die durch und ersetzt. Wir erhalten keine Ausnahmen, wenn wir die Anwendung ausführen – user3360938

Antwort

0

nicht <scanAnnotatedClasses> auf Frühling-Boot Verwenden Sie: es löst eine Ausnahme aufgrund Classloading Magie, die mit org nicht kompatibel ist. Reflexionen scannen.

Sie sollten diese Ausnahme sehen und das Stacktrace in der Frage - wenn Sie nicht - und wenn es wirklich eine Ausnahme gibt - zuerst beheben, was Ihre Ausnahme isst, bevor Sie etwas anderes tun. Ausnahmen essen ist sehr, sehr schlecht.

Ersetzen Sie <scanAnnotatedClasses> durch <solutionClass> und entityClass Elemente.

Verwandte Themen