'Drools ClassCastException when tomcat upgraded from tomcat 7 to tomcat 9
Facing issues with drools jars when upgrading tomcat to tomcat9.
I had a drools based rule engine deployed in a tomcat 7. I was using 7.28.0.Final for drools.
When I upgraded the tomcat to tomcat 9, it started giving me following exception
Caused by: java.lang.RuntimeException: Unable to load dialect 'org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration:java:null'
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.addDialect(KnowledgeBuilderConfigurationImpl.java:394)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.buildDialectConfigurationMap(KnowledgeBuilderConfigurationImpl.java:380)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:235)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:187)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.<init>(KnowledgeBuilderConfigurationImpl.java:177)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.<init>(KnowledgeBuilderImpl.java:293)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.<init>(KnowledgeBuilderImpl.java:229)
at org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilder(KnowledgeBuilderFactoryServiceImpl.java:54)
at org.kie.internal.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:48)
at com.rbccm.fic.mrd.ruleEngine.evaluation.util.evaluator.impl.ModelMappingFileRulesKnowldegeBase.createKnowledgeBase(ModelMappingFileRulesKnowldegeBase.java:44)
at com.rbccm.fic.mrd.ruleEngine.evaluation.util.ModelMappingEvaluatorUtil.evaluateAndCreateOutputs(ModelMappingEvaluatorUtil.java:76)
at com.rbccm.fic.productcode.service.evaluation.impl.processor.ModelMappingRequestProcessorImpl.getResponseForASource(ModelMappingRequestProcessorImpl.java:85)
at com.rbccm.fic.productcode.service.evaluation.impl.processor.ModelMappingRequestProcessorImpl.get(ModelMappingRequestProcessorImpl.java:62)
at com.rbccm.fic.productcode.service.evaluation.impl.processor.ModelMappingRequestProcessorImpl.get(ModelMappingRequestProcessorImpl.java:21)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration
at org.drools.core.common.ProjectClassLoader.tryDefineType(ProjectClassLoader.java:197)
at org.drools.core.common.ProjectClassLoader.loadType(ProjectClassLoader.java:187)
at org.drools.core.common.ProjectClassLoader.loadClass(ProjectClassLoader.java:154)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.addDialect(KnowledgeBuilderConfigurationImpl.java:388)
Then I upgraded the Drools to much higher version 7.49.0.Final and now I am getting same error but for some other class.
Caused by: java.lang.RuntimeException: Error loading accumulate function for identifier sumBD. Class org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction not found
at org.drools.compiler.rule.builder.util.AccumulateUtil.loadAccumulateFunction(AccumulateUtil.java:63)
at org.drools.compiler.rule.builder.util.AccumulateUtil.buildAccumulateFunctionsMap(AccumulateUtil.java:84)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:245)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:197)
at org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.<init>(KnowledgeBuilderConfigurationImpl.java:187)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.<init>(KnowledgeBuilderImpl.java:291)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.<init>(KnowledgeBuilderImpl.java:227)
at org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilder(KnowledgeBuilderFactoryServiceImpl.java:54)
at org.kie.internal.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:52)
at com.rbccm.fic.mrd.ruleEngine.evaluation.util.evaluator.impl.ModelMappingFileRulesKnowldegeBase.createKnowledgeBase(ModelMappingFileRulesKnowldegeBase.java:44)
at com.rbccm.fic.mrd.ruleEngine.evaluation.util.ModelMappingEvaluatorUtil.evaluateAndCreateOutputs(ModelMappingEvaluatorUtil.java:88)
at com.rbccm.fic.productcode.service.evaluation.impl.processor.ModelMappingRequestProcessorImpl.getResponseForASource(ModelMappingRequestProcessorImpl.java:85)
at com.rbccm.fic.productcode.service.evaluation.impl.processor.ModelMappingRequestProcessorImpl.get(ModelMappingRequestProcessorImpl.java:62)
at com.rbccm.fic.productcode.service.evaluation.impl.processor.ModelMappingRequestProcessorImpl.get(ModelMappingRequestProcessorImpl.java:21)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1582)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction
at org.drools.reflective.classloader.ProjectClassLoader.tryDefineType(ProjectClassLoader.java:171)
at org.drools.reflective.classloader.ProjectClassLoader.loadType(ProjectClassLoader.java:161)
at org.drools.reflective.classloader.ProjectClassLoader.loadClass(ProjectClassLoader.java:128)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.drools.compiler.rule.builder.util.AccumulateUtil.loadAccumulateFunction(AccumulateUtil.java:60)
... 19 more
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|