//a
ParserContext ctx1 = new ParserContext();
ctx1.addImport("time", System.class.getMethod("currentTimeMillis"));
Serializable exp1 = MVEL.compileExpression("time()", ctx1);
System.out.println(MVEL.executeExpression(exp1));
//b
ParserContext ctx2 = new ParserContext();
ctx2.addImport("print", System.out.getClass().getMethod("print", String.class));
Serializable exp2 = MVEL.compileExpression("print('test')", ctx2);
System.out.println(MVEL.executeExpression(exp2));
以上两段代码,b段代码始终报错“Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class”。
开始一直找不到原因,认为是mvel不支持像out这种静态属性的方法,后来分析错误原因才知道自己犯傻了,a段代码不报错是因为currentTimeMillis方法是静态方法,调用时不需要instance,而out下面的print方法不是。
所以在MVEL中调用System.out.print方法时没法偷懒,只能将b段代码改成:
ParserContext ctx2 = new ParserContext();
ctx2.addImport("print", System.out.getClass().getMethod("print", String.class));
Serializable exp2 = MVEL.compileExpression("System.out.print('test')", ctx2);
System.out.println(MVEL.executeExpression(exp2));
分享到:
相关推荐
20几岁了,别再犯迷糊............................
基于迷糊控制的小车研究 基于迷糊控制的小车研究 基于迷糊控制的小车研究 基于迷糊控制的小车研究
主要介绍了JavaScript面向对象的程序设计(犯迷糊的小羊),需要的朋友可以参考下
通达信指标公式源码 迷糊K线结合融胜轨道【班门弄斧好玩K线】.doc
PJBlog2 迷糊娃娃V1
本文利用双线性插值的方法 ,固定并适当选取方向微分的微元大小 ,构造出3 ×3方向微分乘子 ,得到了高效高精度的自动鉴别运动模糊方向的新方法 ,并通过数值实验进行了验证。
Bo-Blog 迷糊公主模板
C++中const用法总结,希望对那些对const犯迷糊的人有所帮助!
SSM框架搭建 增删改查迷糊查询和分页
通达信指标公式源码 迷糊K线结合融胜轨道.doc
模糊综合评价用于评价实际问题,得出得分,由得分评价。
《万恶迷糊尤物》第三技:笑看混战人1000字.docx
现在有不少新款存储设备具备Type-C和USB 3.1规范,不少用户可能就犯迷糊了。今天我们就来介绍一下USB 3.1和Type-C。
三套试题模拟考试环境,顺祝各位down友通过考试,希望各位down友多努力练习,模拟试题毕竟不是真题,多少是有出入的,重要的通过模拟考试环境给down友增加信心,使down友能够在真正的考场不至于犯迷糊,不至于紧张,...
都不陌生,是英制,很多外国软件都用英制尺寸,包括Allegro、Protel,连中发制板的大妈也会跟你说线宽是多少mil,孔径是多少mil,由于我们还是比较熟悉公制(mm,cm),所以在设计电路板时经常犯迷糊,因此特意把他们...
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“ 辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。 但当我总结的时候才发现,这个问题既可以简单,又可以...
常用集成电路引脚识别,都是常用的常见的...下了看看以后就不会犯迷糊了
很好用的一款小软件!可以装扮你的电脑,而且内存占用很小!大家试试吧!