Further testing shows that while the rules engine can locate facts from other
plug-ins (facts located in the same plugin as the rules engine work fine,
but not realistic to expect that all facts will be co-located in the same
plugin), an attempt to reconstitute them using the ByteArrayClassloader will
not work. Has anyone been successful using facts located in other plug-ins?
I am using Drools 5.M2 with Eclipse 3.4.
keithnielsen wrote:
I have the following rule:
rule "Retrieve CID Presentation Model"
ruleflow-group "RetrieveCID"
when
CIDPresentationModel($cidValue:cidValue,$cidExpirationDate:expirationDate)
then
boolean cidResult =
cidService.verifyCIDIsValid($cidValue,$cidExpirationDate);
CIDResult result = new CIDResult(cidResult);
insert(result);
System.out.println("Executing: Retrieve CID Presentation Model");
end
Deep in the bowels of drools there is a call to
ClassFieldAccessorFactory.getClassFieldReader where it attempts to create
a class using the byte array classloader, i.e. final Class<?> newClass =
byteArrayClassLoader.defineClass(className, bytes,PROTECTION_DOMAIN). Its
at this point that a NoClassDefFoundError on the
BaseObjectClassFieldReader. From what I understand of NoClassDefFoundError
it can result when there are two sources of the same class in the
classpath or if there is some reference from the class resulting in the
error to another class that can not be resolved. It only appears in
situations where there is fields involved. It doesnt seem to matter how
simple the object is, the minute I try to use field assignment it throws
an error.
The rules engine is running as an Eclipse plug-in.
--
View this message in context:
http://www.nabble.com/NoClassDefFoundError%3A-BaseObjectClassFieldReader-...
Sent from the drools - user mailing list archive at
Nabble.com.