Reason for Exception java.lang.VerifyError: Bad type on operand stack while writing rule in Mvel

Reason for Exception java.lang.VerifyError: Bad type on operand stack while writing rule in Mvel

我是 Mvel 的新手。执行以下 mvel 表达式时出现错误。对于大小小于 20 但不大于 that.This 的计划,此表达式执行良好 that.This 行为由大小大于 20 的计划显示。

if (true) { tmp.__tmp = ent.data.plans; if (tmp.__tmp != null) { for (int index =0; index < ent.data.plans.size(); index++){ element=ent.data.plans[index]; System.out.println(element.name );}}}

出现以下错误

java.lang.VerifyError: Bad type on operand stack Exception Details: Location: ASMAccessorImpl_4263943071452801154960.getValue(Ljava/lang/Object;Ljava/lang/Object;Lorg/mvel2/integration/VariableResolverFactory;)Ljava/lang/Object; @45: invokeinterface Reason: Type 'java/lang/Object' (current frame, stack[1]) is not assignable to integer Current Frame: bci: @45 flags: { } locals: { 'ASMAccessorImpl_4263943071452801154960', 'java/lang/Object', 'java/lang/Object', 'org/mvel2/integration/VariableResolverFactory' } stack: { 'java/util/List', 'java/lang/Object' } Bytecode: 0x0000000: 2d12 0eb9 0014 0200 b900 1901 00c0 001b 0x0000010: 121d b900 2102 00c0 0023 b600 27c0 0029 0x0000020: 2d12 2bb9 0014 0200 b900 1901 00b9 002e 0x0000030: 0200 b0

at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) at java.lang.Class.getConstructor0(Class.java:3075) at java.lang.Class.newInstance(Class.java:412)

请帮忙。

我收到由 org.mvel2.optimizers.OptimizationNotSupported 引起的异常。此行为显示为 DynamicOptimizer 在 ASM 优化器失败时没有任何回退。反射优化器似乎是一个很好的回退选项,mvel 已修复这是最新版本的 mvel2 (2.2.7)。

我已经升级了 mvel2 版本,现在 null-safe bean 导航工作正常。