-
Type:
Bug
-
Status: Verified (View Workflow)
-
Priority:
Major
-
Resolution: Done
-
Affects Version/s: None
-
Fix Version/s: 7.1.0.GA
-
Component/s: BRE
-
Labels:None
-
Target Release:
-
Fix Build:CR1
-
Steps to Reproduce:
-
Sprint:2018 Week 05-06, 2018 Week 36-38
The Drools compiler class org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration
does not include Java 9 as a valid language level. Instead, when run using Java 9, the assumed java version is set to the default value of "1.7".
As a consequence, when compiling a rules file requiring Java 8 specific language features, the compilation will fail. For example, if a rule RHS contains the statement:
Arrays.asList("a","b","c").forEach(System.out::println); |
The rule compilation fails with the error:
[ERROR] Unable to build KieBaseModel:default |
Rule Compilation error : [Rule name='test'] |
defaultpkg/Rule_test959974052.java (7:387) : Method references are allowed only at source level 1.8 or above |
The problem can be worked around by adding a configuration file META-INF/kie.properties.conf containing the line:
drools.dialect.java.compiler.lnglevel = 1.8 |
The Drools compiler code will use this value instead of the System "java.version" value, avoiding the problem.
- cloned from
-
DROOLS-2305 Drools compiler does not recognize Java 9
-
- Resolved
-