Я пишу несколько выражений MVEL "$input.get('RESULT').array()[1]"
, где $input.get('RESULT')
возвращает ByteBuffer
, поэтому я преобразовываю его в массив, используя array()
, а затем пытаюсь получить значение индекса 1. где массив имеет 16 атрибутов. * * 1005
Но когда Mvel выполняет это выражение, я получаю
java.lang.ClassCastException: [B cannot be cast to java.lang.Object
Я использую код ниже
MVEL.executeExpression(statement, fieldContext.getContext(), fieldContext.getVariables());
Я написал и другое выражение, которое работает нормально, я получаю эту ошибку для первого байта.
Любая помощь здесь будет оценена.
Обновление:
Когда я использую метод ByteBuffer
get, я получил ошибку ниже, поэтому я решил попробовать с array
.
java.lang.IllegalAccessError: tried to access class java.nio.HeapByteBuffer from class ASMAccessorImpl_2330495751530608772190
at ASMAccessorImpl_2330495751530608772190.getValue(Unknown Source)
at org.mvel2.optimizers.dynamic.DynamicGetAccessor.getValue(DynamicGetAccessor.java:79)
at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:108)
at org.mvel2.MVELRuntime.execute(MVELRuntime.java:86)
at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
at org.mvel2.MVEL.executeExpression(MVEL.java:922)`