簡體   English   中英

在模塊路徑上運行OptaPlanner

[英]Running OptaPlanner on the module path

我想讓我的OptaPlanner項目在模塊路徑上運行。

我基於文檔中的雲平衡演示創建了一個示例存儲庫( mwkroening / optaplanner-modulepath-example )。

示例項目在類路徑上運行良好,但是在嘗試使其在模塊路徑上運行時,我無法解決該問題。 您可以在PR #1中看到目前為止的進展。

solverConfig.xml中指定的scoreDrl無法加載,但出現以下異常:

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-883psiroky / optaplanner-cloudbalancing-jdk9 ,但我認為在這種情況下使用了類路徑資源而不是模塊路徑上的資源。

我該如何解決這個問題? 也許我應該打開一個問題,而不是在這里發布,對嗎?

每個SolverFactory.createFrom*(...)都有一個重載方法,它接受一個類加載器: SolverFactory.createFrom*(..., classloader) 該類加載器不僅用於加載XML資源,還用於加載DRL資源。

所以嘗試:

SolverFactory.createFromXmlResource("/.../cloudBalancingSolverConfig.xml",
    App.class.getClassLoader())

我還沒有測試過這個,但如果它有效,我很樂意看到這個添加到手冊中的“拼圖”部分 (PR歡迎:)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM