Я бы хотел, чтобы мой проект OptaPlanner выполнялся по пути модуля.
Я создал пример репозитория ( mwkroening / optaplanner-modulepath-example ) на основе демонстрации балансировки облака в документах.
Пример проекта хорошо работает на classpath, но есть проблема, которую я не могу обойти, пытаясь заставить его работать по пути к модулю. Вы можете видеть прогресс в PR # 1 .
Не удается загрузить ScoreDrl, указанный в solverConfig.xml , за исключением следующего:
Exception in thread "main" java.lang.IllegalArgumentException: The scoreDrl (io/github/mwkroening/optaplannermodulepathexample/cloudBalancingScoreRules.drl) does not exist as a classpath resource in the classLoader (jdk.internal.loader.ClassLoaders$AppClassLoader@7c16905e).
at org.optaplanner.core@7.18.0.Final/org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildDroolsScoreDirectorFactory(ScoreDirectorFactoryConfig.java:519)
at org.optaplanner.core@7.18.0.Final/org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:351)
at org.optaplanner.core@7.18.0.Final/org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:255)
at org.optaplanner.core@7.18.0.Final/org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61)
at io.github.mwkroening.optaplannermodulepathexample/io.github.mwkroening.optaplannermodulepathexample.App.main(App.java:14)
Я уже получал подобное исключение при вызове SolverFactory.createFromXmlResource .
Вместо этого я решил обойти эту проблему:
SolverFactory.createFromXmlInputStream(
App.class.getResourceAsStream("cloudBalancingSolverConfig.xml"));
Я посмотрел на PLANNER-883 и psiroky / optaplanner-cloudbalancing-jdk9 , но я думаю, что в этом случае использовался ресурс classpath, а не один на пути к модулю.
Как я мог решить эту проблему?
Возможно, мне следует открыть вопрос, а не публиковать его здесь, верно?