如何解决当 tomcat 从 tomcat 7 升级到 tomcat 9 时 Drools ClassCastException
将tomcat升级到tomcat9时遇到drools jars的问题。
我在 tomcat 7 中部署了一个基于 drools 的规则引擎。我使用 7.28.0.Final 来处理 drools。
当我将 tomcat 升级到 tomcat 9 时,它开始给我以下异常
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)
然后我将 Drools 升级到更高的 7.49.0.Final 版本,现在我遇到了同样的错误,但对于其他一些类。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。