无法使用 MVEL 导入静态方法

发布于 2024-10-05 18:22:38 字数 825 浏览 5 评论 0原文

根据 MVEL 的文档,可以在脚本中导入静态 java 方法: http://mvel .codehaus.org/Programmatic+Imports+for+2.0。以下示例取自该页面,但不起作用(我收到错误:无法访问属性(空父级):时间)。可能出什么问题了?

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());

    }

}

According to MVEL's documentation, it's possible to import static java methods in a script: http://mvel.codehaus.org/Programmatic+Imports+for+2.0 . The following example is taken from that page, however is not working (I get an Error: unable to access property (null parent): time). What could be wrong?

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());

    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈独秀 2024-10-12 18:22:38

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

改变这一行:

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

这样:

System.class.getMethod("currentTimeMillis")

getMethod's second argument used for parameter types, its not used for return type of the method.

change this line:

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

with this:

System.class.getMethod("currentTimeMillis")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文