Drools异常:You’re trying to compile a Drools asset without mvel.
在使用最新版的drools时,运行程序会抛出如下异常:
Exception in thread "main" java.lang.RuntimeException: You're trying to compile a Drools asset without mvel. Please add the module org.drools:drools-mvel to your classpath. at org.drools.core.base.CoreComponentsBuilder.throwExceptionForMissingMvel(CoreComponentsBuilder.java:34) at org.drools.compiler.compiler.Dialect$DummyDialect.getConsequenceBuilder(Dialect.java:281) at org.drools.compiler.rule.builder.RuleBuilder.build(RuleBuilder.java:124)
在之前版本同样的程序却可以正常运行,这是为什么呢?
其实在drools7.44.0开始,已经开始对drools-core对应的jar包进行简化操作,把与规则引擎计算无关的功能逐步单独抽离出来。其中drools7.44.0就是个分水岭,此版本及之前版本如果引入如下依赖:
<dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>${drools.version}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>${drools.version}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>${drools.version}</version> </dependency>
程序就可以正常运行了,但是drools7.45.0开始,还需要单独引入mvel相关的依赖,原本在drools core中的mvel,已经被抽离出来,作为独立模块了。
<dependency> <groupId>org.drools</groupId> <artifactId>drools-mvel</artifactId> <version>${drools.version}</version> </dependency>
另外,我们不要被mvel误导,以为只有用到mvel方言时才会用到该依赖,其实在drl文件解析等功能下都用到了mvel。所以,在新版本中,如果出现上述异常,则需要引入对应的drools-mvel依赖。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://choupangxia.com/2021/01/18/drools-without-mvel/