【问题标题】:Drools Eclipse Plugin ignores source levelDrools Eclipse 插件忽略源级别
【发布时间】:2024-05-04 01:50:01
【问题描述】:

我已将 Drools Eclipse 插件 org.drools.eclipse 7.36.0.Final 安装到运行 Oracle JDK 1.8.0_92 的 Eclipse 2020_03 中。我已经下载并解压了drools-distribution-7.36.0.Final,并在Eclipse Preferences 中将binaries/ 目录添加为Drools > Installed Drools Runtimes

只要我使用任何 Java 1.5+ 功能(泛型、foreach 循环、闭包……),我就会在规则编辑器中收到错误标记,指出存在语法错误,并且这些功能需要源级别 1.5(闭包为 1.8 )。

我的 .drl 文件和项目本身似乎都很好,因为我可以通过 maven 编译和运行而不会出错。所以这不是一个阻塞问题,但很烦人的是我似乎无法在我的 IDE 中对 .drl 文件进行语法检查。

我已经搜索了互联网并尝试了各种东西:

  • 我已将项目和工作区中的 JDT 源级别设置为 1.8
  • 我在属性中检查了已安装的 JRE,只列出了一个 JDK 1.8.0_92
  • 我在/src/main/resources/META-INF/ 中创建了一个带有此内容的kmodule.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <configuration>
        <property key="drools.dialect.java.compiler.lnglevel" value="1.8" />
        <property key="drools.dialect.java.compiler" value="ECLIPSE" />
        <property key="drools.compiler.lnglevel" value="1.8" />
    </configuration>
    <kbase name="rules">
        <ksession name="codegen-rules"/>
    </kbase>
</kmodule>
  • 我在/src/main/resources/META-INF/ 中创建了一个kie.properties.conf 文件,内容如下:
drools.dialect.java.compiler.lnglevel=1.8
drools.dialect.java.compiler=ECLIPSE
drools.compiler.lnglevel=1.8
  • 我已在我的eclipse.ini 文件的 VM args 部分中添加了属性:
-Ddrools.dialect.java.compiler.lnglevel=1.8
-Ddrools.dialect.java.compiler=ECLIPSE
-Ddrools.compiler.lnglevel=1.8

但所有这些似乎都没有任何效果,它一直给我相同的错误标记。

在检查.drl 文件的语法时,如何告诉规则编辑器我想要启用Java 1.8 源代码级别?

【问题讨论】:

    标签: eclipse drools jboss-tools


    【解决方案1】:

    我在使用最新的 eclipse 版本和最新的 drools 版本时也遇到了这个问题。

    使用Eclipse 2019-03Jboss Tools Integration Stack here 确实有效。因此,要么在以后的 Eclipse 版本中出现问题,要么在以后的 drools 版本中出现问题。集成栈使用 7.21.0.Final

    我还没有调查到底是什么东西坏了,但即使我知道了,我也不知道我会向谁报告:(

    【讨论】:

    • 确实如此。非常感谢你!我将 Drools Eclipse 插件降级到 7.21.0.Final 并且有效。
    • 我在 Drools 项目问题跟踪器上提交了一个问题:issues.redhat.com/browse/DROOLS-5388