Проблема с запуском кода optaplanner через цель тестирования mvn - PullRequest
0 голосов
/ 23 мая 2019

У меня есть приложение, которое использует Optaplanner для создания плана. Когда я пишу интеграционный тест и вызываю его из командной строки терминала, используя mvn интеграционный тест, optaplanner выдает исключение. Исключение составляет «java.lang.IllegalStateException: файл zip закрыт», вызванный «по адресу org.optaplanner.core.config.domain.ScanAnnotatedClassesConfig.buildSolutionDescriptor (ScanAnnotatedClassesConfig.java:84)».

Рабочий код работает, и я догадываюсь, что он не может найти ресурс конфигурации решателя, используя этот путь:

solverFactoryBase = SolverFactory
                .createFromXmlResource("solver/solverConfig-minDistanceTimeToProcess.xml");

Это трассировка стека исключений:

java.lang.IllegalStateException: zip file closed
    at java.util.zip.ZipFile.ensureOpen(ZipFile.java:686)
    at java.util.zip.ZipFile.access$200(ZipFile.java:60)
    at java.util.zip.ZipFile$ZipEntryIterator.hasNext(ZipFile.java:508)
    at java.util.zip.ZipFile$ZipEntryIterator.hasMoreElements(ZipFile.java:503)
    at java.util.jar.JarFile$JarEntryIterator.hasNext(JarFile.java:253)
    at java.util.jar.JarFile$JarEntryIterator.hasMoreElements(JarFile.java:262)
    at org.reflections.vfs.ZipDir$1$1.computeNext(ZipDir.java:30)
    at org.reflections.vfs.ZipDir$1$1.computeNext(ZipDir.java:26)
    at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
    at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
    at org.reflections.Reflections.scan(Reflections.java:243)
    at org.reflections.Reflections.scan(Reflections.java:202)
    at org.reflections.Reflections.<init>(Reflections.java:123)
    at org.optaplanner.core.config.domain.ScanAnnotatedClassesConfig.buildSolutionDescriptor(ScanAnnotatedClassesConfig.java:84)
    at org.optaplanner.core.config.solver.SolverConfig.buildSolutionDescriptor(SolverConfig.java:341)
    at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:251)
    at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61)
    at com.brc.planner.app.UavRoutePlanner.callSolver(UavRoutePlanner.java:190)
    at com.brc.planner.app.UavRoutePlanner.lambda$createReceive$0(UavRoutePlanner.java:138)
    at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:26)
    at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:21)
    at scala.PartialFunction.applyOrElse(PartialFunction.scala:123)
    at scala.PartialFunction.applyOrElse$(PartialFunction.scala:122)
    at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:21)
    at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)
    at akka.actor.Actor.aroundReceive(Actor.scala:517)
    at akka.actor.Actor.aroundReceive$(Actor.scala:515)
    at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:180)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:588)
    at akka.actor.ActorCell.invoke(ActorCell.scala:557)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:258)
    at akka.dispatch.Mailbox.run(Mailbox.scala:225)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:235)
    at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

1 Ответ

0 голосов
/ 27 мая 2019

Не путайте createFromXmlResource() с createFromXmlFile().

createFromXmlResource() ожидает ресурс classpath, который обычно находится в пространстве имен (= пакет java), например, "/org/foo/barSolverConfig.xml", чтобы избежать проблем при его замачивании или сжатии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...