[rules-users] KieBuilder.buildAll() causing exception

waynemetcalfe waynemetcalfe at outlook.com
Thu Jan 16 09:42:06 EST 2014


Hi Guys,
I'm a pretty recent Drools user.

I'm trying to update a project to stop using the deprecated KnowledgeBase.
I've followed examples on 
http://blog.athico.com/2013/10/configuration-and-convention-based.html
<http://blog.athico.com/2013/10/configuration-and-convention-based.html>  ,
but an exception is being thrown when trying to build the KieBases.

Drools version:6.0.0.Final
Java version: 1.7.0_45

Code snippet:
...
final KieServices ks = KieServices.Factory.get();
final KieRepository kr = ks.getRepository();
final KieFileSystem kfs = ks.newKieFileSystem();
//ruleScript is simply a string containing the rules
kfs.write("src/main/resources/com/company/test/rules/rules.drl",
ruleScript);
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll();
        
if (kb.getResults().hasMessages(Level.ERROR)){
    configuration.getLog().error("\nSomething wrong here!\n\n");
}       
        
final KieContainer kContainer =
ks.newKieContainer(kr.getDefaultReleaseId());
session = kContainer.newKieSession();
...

The following exception is thrown:

java.lang.instrument.IllegalClassFormatException: Error while instrumenting
class org/drools/compiler/lang/DRL6Lexer.
    at
org.jacoco.agent.rt.internal_9dd1198.CoverageTransformer.transform(CoverageTransformer.java:89)
        at
sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at
sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at
org.drools.compiler.compiler.DRLFactory.getDRLLexer(DRLFactory.java:93)
        at
org.drools.compiler.compiler.DRLFactory.buildLexer(DRLFactory.java:43)
        at org.drools.compiler.compiler.DrlParser.parse(DrlParser.java:164)
        at org.drools.compiler.compiler.DrlParser.parse(DrlParser.java:146)
        at
org.drools.compiler.compiler.PackageBuilder.drlToPackageDescr(PackageBuilder.java:518)
        at
org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl$1.map(CompositeKnowledgeBuilderImpl.java:404)
        at
org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.buildResource(CompositeKnowledgeBuilderImpl.java:329)
        at
org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.buildPackageDescr(CompositeKnowledgeBuilderImpl.java:312)
        at
org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.buildPackages(CompositeKnowledgeBuilderImpl.java:96)
        at
org.drools.compiler.compiler.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:87)
        at
org.drools.compiler.kie.builder.impl.AbstractKieModule.buildKnowledgePackages(AbstractKieModule.java:204)
        at
org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:39)
        at
org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:309)
        at
org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:187)
        at
com.company.test.rules.BasicRuleEngine.start(BasicRuleEngine.java:66)
        at
com.company.test.rules.TestBasicRuleEngine.listenersShouldBeNotifiedOfStartAndStop(TestBasicRuleEngine.java:88)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:254)
        at
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:149)
        at
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
        at
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:159)
        at
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:87)
        at
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
        at
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
    Caused by: java.io.IOException: Error while instrumenting class
org/drools/compiler/lang/DRL6Lexer.
        at
org.jacoco.agent.rt.internal_9dd1198.core.instr.Instrumenter.instrumentError(Instrumenter.java:147)
        at
org.jacoco.agent.rt.internal_9dd1198.core.instr.Instrumenter.instrument(Instrumenter.java:98)
        at
org.jacoco.agent.rt.internal_9dd1198.CoverageTransformer.transform(CoverageTransformer.java:87)
        ... 60 more
        Caused by: java.lang.RuntimeException: Method code too large!
            at
org.jacoco.agent.rt.internal_9dd1198.asm.MethodWriter.a(Unknown Source)
        at
org.jacoco.agent.rt.internal_9dd1198.asm.ClassWriter.toByteArray(Unknown
Source)
        at
org.jacoco.agent.rt.internal_9dd1198.core.instr.Instrumenter.instrument(Instrumenter.java:79)
        at
org.jacoco.agent.rt.internal_9dd1198.core.instr.Instrumenter.instrument(Instrumenter.java:96)
        ... 61 more


Any help or info would be greatly appreciated!




--
View this message in context: http://drools.46999.n3.nabble.com/KieBuilder-buildAll-causing-exception-tp4027720.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list