【问题标题】:Conflict kie-server-client and optaplanner-spring-boot-starter冲突 kie-server-client 和 optaplanner-spring-boot-starter
【发布时间】:2023-01-07 04:46:34
【问题描述】:

当我一起使用 between dependencies 时

<dependency>
  <groupId>org.kie.server</groupId>
  <artifactId>kie-server-client</artifactId>
</dependency>

<dependency>
  <groupId>org.optaplanner</groupId>
  <artifactId>optaplanner-spring-boot-starter</artifactId>
</dependency>

我低于警告

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'solverManager' defined in class path resource [org/optaplanner/spring/boot/autoconfigure/OptaPlannerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'solverManager' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solverFactory' defined in class path resource [org/optaplanner/spring/boot/autoconfigure/OptaPlannerAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.optaplanner.core.api.solver.SolverFactory]: Factory method 'solverFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/drools/core/reteoo/CoreComponentFactory

然后是一个例外。

你知道我如何同时使用这两个依赖项吗?

【问题讨论】:

    标签: optaplanner kie


    【解决方案1】:

    OptaPlanner 8 和 Drools 7 不能一起使用。 OptaPlanner 8 依赖于 Drools 8,这会导致各种类路径冲突。

    有一种方法可以在没有 Drools 的情况下使用 OptaPlanner 8。假设你不使用分数 DRL(或者,如果你使用约束流,你切换到 BAVET 实现)你将能够从 OptaPlanner 8 中删除所有 Drools 依赖项。但是,我不能保证这不会爆炸出于其他原因,因为它从未被尝试过;最安全的答案是,这是行不通的。 OptaPlanner 8 需要 Drools 8。

    另一种选择是使用专为与 KIE 一起使用而设计的 OptaPlanner 7,但该(非常旧的)版本不再由社区维护。

    【讨论】:

      【解决方案2】:

      我正在添加第二个答案,它采用了完全不同的方法。

      Spring Boot starter 是一种开发独立的基于 OptaPlanner 的应用程序的方法。 KIE Server 是一个嵌入了 OptaPlanner 并允许第三方在 KIE Server 上运行求解器的应用程序。

      从这一点来看,两者根本不相容:

      • 您正在编写自己的应用程序吗?使用 Spring Boot 启动器。
      • 您正在与已经公开 OptaPlanner 的服务器对话吗?使用 KIE 服务器。

      我看不出您如何将两者结合在一个 JAR 中。

      【讨论】:

        猜你喜欢
        • 2023-04-04
        • 1970-01-01
        • 2017-07-19
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        • 2017-02-19
        • 1970-01-01
        • 2014-04-07
        相关资源
        最近更新 更多