]
Geoffrey De Smet edited comment on DROOLS-1169 at 5/10/16 11:21 AM:
--------------------------------------------------------------------
Mario suggested to try the native compiler, but due to DROOLS-1171 that fails (that config
option fails on JDK 8 too).
was (Author: ge0ffrey):
Using the JavaCompilerFactory (which I confirmed through a System.out that it's
active):
{code}
<solver>...
<scoreDirectorFactory>...
<kieBaseConfigurationProperties>
<drools.dialect.java.compiler>NATIVE</drools.dialect.java.compiler>
</kieBaseConfigurationProperties>
</scoreDirectorFactory>
</solver>
{code}
does not fix the problem. I get the exact same error messages
("Rule_Conflict903142795.java (1:0) : The type java.lang.Object cannot be resolved.
It is indirectly referenced from required .class files" etc)
Running drools with OpenJDK9 (10 May 2016) gives "type
java.lang.Object cannot be resolved" and "java.io.Serializable cannot be
resolved"
-----------------------------------------------------------------------------------------------------------------------------------------
Key: DROOLS-1169
URL:
https://issues.jboss.org/browse/DROOLS-1169
Project: Drools
Issue Type: Bug
Components: core engine
Reporter: Geoffrey De Smet
Assignee: Mario Fusco
The code below runs perfectly with OpenJDK 8 (and even 6 and 7).
To reproduce, use JDK 9 (
https://jdk9.java.net/download/ ) and in optaplanner-core, run
XStreamXmlSolverFactoryTest [1] (or mostly any other test that builds a DRL file) to get
this error:
{code}
15:56:40.229 [main] ERROR o.d.c.k.b.impl.AbstractKieModule - Unable to build
KieBaseModel:defaultKieBase
Rule Compilation error : [Rule name='Conflict']
org/optaplanner/core/api/solver/Rule_Conflict903142795.java (1:0) : The type
java.lang.Object cannot be resolved. It is indirectly referenced from required .class
files
org/optaplanner/core/api/solver/Rule_Conflict903142795.java (1:0) : The type
java.io.Serializable cannot be resolved. It is indirectly referenced from required .class
files
org/optaplanner/core/api/solver/Rule_Conflict903142795.java (3:337) : Implicit super
constructor Object() is undefined for default constructor. Must define an explicit
constructor
org/optaplanner/core/api/solver/Rule_Conflict903142795.java (6:569) :
java.lang.Exception cannot be resolved to a type
java.lang.IllegalStateException: There are errors in a score DRL:
Error Messages:
Message [id=1, level=ERROR, path=org/optaplanner/core/api/solver/testdataScoreRules.drl,
line=31, column=0
text=Rule Compilation error The type java.lang.Object cannot be resolved. It is
indirectly referenced from required .class files
The type java.io.Serializable cannot be resolved. It is indirectly referenced from
required .class files
Implicit super constructor Object() is undefined for default constructor. Must define an
explicit constructor
java.lang.Exception cannot be resolved to a type]
{code}
That tests builds this DRL:
{code}
package org.optaplanner.core.api.solver;
dialect "java"
import org.optaplanner.core.api.score.buildin.simple.SimpleScoreHolder;
import org.optaplanner.core.impl.testdata.domain.TestdataValue;
import org.optaplanner.core.impl.testdata.domain.TestdataEntity;
global SimpleScoreHolder scoreHolder;
// ############################################################################
// Constraints
// ############################################################################
rule "Conflict"
when
TestdataEntity(value != null, $leftValue : value)
TestdataEntity(value == $leftValue)
then
scoreHolder.addConstraintMatch(kcontext, -1);
end
{code}
Not sure where the Object constructor reference comes from... This might be a JDK 9
upstream issue.
Note: don't build drools with OpenJDK9 as that will fail sooner :)
[1]
https://github.com/droolsjbpm/optaplanner/blob/master/optaplanner-core/sr...