当 tomcat 从 tomcat 7 升级到 tomcat 9 时 Drools ClassCastException

如何解决当 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?