【问题标题】:Optaplanner - drools file cannot be compiled when project is deployedOptaplanner - 部署项目时无法编译drools文件
【发布时间】:2021-07-26 10:05:14
【问题描述】:

我们使用optaplanner-core 使用 Java 11 开发了一个 SpringBoot 项目,并在 Drools 文件中定义了规则。使用 JDK 在 IntelliJ 中运行应用程序没有问题。

然后,我们将应用部署到安装了 JRE 的 Azure 应用服务上。我们得到以下错误:

Caused by: org.kie.memorycompiler.KieMemoryCompilerException: 
Cannot find the System's Java compiler. Please use JDK instead of JRE or add drools-ecj dependency to use in memory Eclipse compiler

我们尝试添加以下依赖项,但仍然出现相同的错误:

<dependency>
    <groupId>org.optaplanner</groupId>
    <artifactId>optaplanner-core</artifactId>
    <version>8.4.1.Final</version>
</dependency>
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-ecj</artifactId>
    <version>7.51.0.Final</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>ecj</artifactId>
    <version>3.26.0</version>
</dependency>

有人知道如何解决这个问题吗?

谢谢

【问题讨论】:

    标签: drools java-11 optaplanner ecj


    【解决方案1】:

    添加 drools-ecj 并不能真正解决这个问题。错误信息具有误导性。

    使用 JDK 而不是 JRE。最简单的方法是升级到 Java 11(或更高版本),因为它只附带 JDK。

    【讨论】:

    • 感谢您的回答,但我们已经在 Azure 应用服务上使用 Java 11,无法选择任何 JDK。你是说 Optaplanner 不能在 JRE 上运行?唯一的选择是实现ConstraintProvider 接口并完全删除drools 文件吗?
    • 不再有 JRE,Java 11 根本没有作为 JRE 发布。如果 Azure 从其 Java 发行版中删除 javac,则需要与他们讨论。我相信约束流也需要javac。 CS 和 DRL 都会导致在运行时编译 Java 源代码。
    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 2011-07-03
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多