无法使用MVEL导入静态方法

时间:2010-12-03 20:20:11

标签: java reflection scripting el mvel

根据MVEL的文档,可以在脚本中导入静态java方法:http://mvel.codehaus.org/Programmatic+Imports+for+2.0。以下示例取自该页面,但不起作用(我得到一个错误:无法访问属性(null parent):time)。可能有什么不对?

import java.io.Serializable;
import org.mvel2.MVEL;
import org.mvel2.ParserContext;

public class Test {

    public static void main(String[] args) {

        ParserContext ctx = new ParserContext();
        try {
            ctx.addImport("time", System.class.getMethod("currentTimeMillis", long.class));
        }
        catch (NoSuchMethodException e) {
            // handle exception here.
        }

        Serializable s = MVEL.compileExpression("time();", ctx);
        Object ans = MVEL.executeExpression(s);
        System.out.println(ans.toString());

    }

}

1 个答案:

答案 0 :(得分:3)

getMethod用于参数类型的第二个参数,它不用于方法的返回类型。

更改此行:

System.class.getMethod("currentTimeMillis", long.class)

用这个:

System.class.getMethod("currentTimeMillis")