]
Jon Kranes commented on DROOLS-2305:
------------------------------------
Another side effect of the same core issue is that the Drools Eclipse Plugin rules editor
will throw the exception "value '9' is not a valid language level" when
opening a .drl file. I was unable to find any workaround to this issue (other than
configuring the project to use a lower compiler version). Looking at the source code the
Eclipse plugin gets the java version directly from the project compliance level setting
and does not seem to allow the use of any properties to override that value.
Drools compiler does not recognize Java 9
-----------------------------------------
Key: DROOLS-2305
URL:
https://issues.jboss.org/browse/DROOLS-2305
Project: Drools
Issue Type: Bug
Components: core engine
Affects Versions: 7.5.0.Final
Environment:
Reporter: Jon Kranes
Assignee: Mario Fusco
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:
{code:java}
Arrays.asList("a","b","c").forEach(System.out::println);
{code}
The rule compilation fails with the error:
{code:java}
[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
{code}
The problem can be worked around by adding a configuration file
META-INF/kie.properties.conf containing the line:
{code:java}
drools.dialect.java.compiler.lnglevel = 1.8
{code}
The Drools compiler code will use this value instead of the System
"java.version" value, avoiding the problem.