【问题标题】:How to fix a score DRL and kmodule.xml error如何修复分数 DRL 和 kmodule.xml 错误
【发布时间】:2019-06-21 09:57:11
【问题描述】:

我想在我的项目中嵌入 optaplanner 7.23.0.Final,通过稍微修改其中一个示例来解决优化问题。我可以通过手动运行 IntelliJ 中的主类来运行所有示例,而不会出现问题。在下一步中,我尝试从我的实际项目中调用这样一个未经修改的示例主类。在这里,加载了一些 kie.conf 服务,并且我在 score DRL 错误中运行,我无法解决。请参阅下面的日志和错误。

我假设 .drl 文件没有错误,因为示例在手动启动时运行。

我还假设求解器配置中的所有引用都设置正确,因为更改会立即导致错误。

在某些示例中,除了“Score DRL”方法之外,还有“EasyScore”方法。该错误明确地指的是分数 DRL,因为将分数计算方法更改为“EasyScore”方法之一,优化运行没有错误。但是,我更喜欢 DRL,因为它更快并且已经可用于我想要的示例。

似乎该错误与“kmodule.xml”相关联。不幸的是,我没有这样的文件,但解决示例似乎不需要它。

我尝试在我的 pom 文件中实现所有可能的“optaplanner”、“drools”和“kie”依赖项,但错误仍然存​​在。

在我的项目中,我只是尝试用这个 main 方法调用 optaplanner:

  public static void main(String[] args) {
        org.optaplanner.examples.nqueens.app.NQueensHelloWorld.main(args);
  }

在 NQueensHelloWorld-Example 的 main 方法中构建求解器时出错:

 SolverFactory<NQueens> solverFactory = SolverFactory.createFromXmlResource(
                "org/optaplanner/examples/nqueens/solver/nqueensSolverConfig.xml");
        Solver<NQueens> solver = solverFactory.buildSolver();

日志和错误:

2019-06-21 11:50:28,951 INFO  ServiceDiscoveryImpl.java:105 - Loading kie.conf from  jar:file:/C:/Users/s2932/.m2/repository/org/optaplanner/optaplanner-core/7.23.0.Final/optaplanner-core-7.23.0.Final.jar!/META-INF/kie.conf in classloader sun.misc.Launcher$AppClassLoader@18b4aac2
2019-06-21 11:50:28,953 INFO  ServiceDiscoveryImpl.java:139 - Adding Service +org.optaplanner.core.impl.solver.kie.KieSolverAssemblerService

2019-06-21 11:50:28,953 INFO  ServiceDiscoveryImpl.java:105 - Loading kie.conf from  jar:file:/C:/Users/s2932/.m2/repository/org/drools/drools-decisiontables/7.23.0.Final/drools-decisiontables-7.23.0.Final.jar!/META-INF/kie.conf in classloader sun.misc.Launcher$AppClassLoader@18b4aac2
2019-06-21 11:50:28,954 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.drools.decisiontable.DecisionTableProviderImpl

2019-06-21 11:50:28,955 INFO  ServiceDiscoveryImpl.java:105 - Loading kie.conf from  jar:file:/C:/Users/s2932/.m2/repository/org/drools/drools-compiler/7.23.0.Final/drools-compiler-7.23.0.Final.jar!/META-INF/kie.conf in classloader sun.misc.Launcher$AppClassLoader@18b4aac2
2019-06-21 11:50:28,960 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.drools.compiler.kie.builder.impl.KieServicesImpl

2019-06-21 11:50:28,962 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl

2019-06-21 11:50:28,962 INFO  ServiceDiscoveryImpl.java:105 - Loading kie.conf from  jar:file:/C:/Users/s2932/.m2/repository/org/drools/drools-core/7.23.0.Final/drools-core-7.23.0.Final.jar!/META-INF/kie.conf in classloader sun.misc.Launcher$AppClassLoader@18b4aac2
2019-06-21 11:50:28,963 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.drools.core.io.impl.ResourceFactoryServiceImpl

2019-06-21 11:50:28,964 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.drools.core.marshalling.impl.MarshallerProviderImpl

2019-06-21 11:50:28,965 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.drools.core.concurrent.ExecutorProviderImpl

2019-06-21 11:50:28,965 INFO  ServiceDiscoveryImpl.java:105 - Loading kie.conf from  jar:file:/C:/Users/s2932/.m2/repository/org/kie/kie-internal/7.23.0.Final/kie-internal-7.23.0.Final.jar!/META-INF/kie.conf in classloader sun.misc.Launcher$AppClassLoader@18b4aac2
2019-06-21 11:50:28,966 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.kie.internal.services.KieAssemblersImpl

2019-06-21 11:50:28,966 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.kie.internal.services.KieRuntimesImpl

2019-06-21 11:50:28,967 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.kie.internal.services.KieWeaversImpl

2019-06-21 11:50:28,967 INFO  ServiceDiscoveryImpl.java:139 - Adding Service org.kie.internal.services.KieBeliefsImpl

Exception in thread "main" java.lang.IllegalStateException: There are errors in a score DRL:
Error Messages:
Message [id=1, level=ERROR, path=kmodule.xml, line=0, column=0
   text=kmodule.xml found, but unable to read
]
---
Warning Messages:
---
Info Messages:

    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildDroolsScoreDirectorFactory(ScoreDirectorFactoryConfig.java:607)
    at org.optaplanner.core.config.score.director.ScoreDirectorFactoryConfig.buildScoreDirectorFactory(ScoreDirectorFactoryConfig.java:410)
    at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:334)
    at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61)
    at org.optaplanner.examples.nqueens.app.NQueensHelloWorld.main(NQueensHelloWorld.java:33)
    at main.main(main.java:13)

【问题讨论】:

    标签: drools optaplanner


    【解决方案1】:

    kmodule.xml 仅在您在 SolverFactory.create 方法上使用“Kiecontainer”替代方案时才需要在类路径中(提示:几乎没有人这样做),或者如果您正在使用 kie-server(有些人这样做) .否则最好不要将它放在类路径中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 2017-06-04
      • 2016-06-01
      • 2022-11-21
      • 2021-11-30
      相关资源
      最近更新 更多