犀牛。绑定本机Java对象?

时间:2014-05-30 11:15:30

标签: java javascript java-8 nashorn

我希望将原生Java对象放入ScriptEngine绑定中以便于访问 我的意思是避免使用大量的Java.type(...) 我试着这样做了。

jsEngine.getContext().getBindings(ScriptContext.ENGINE_SCOPE).put("manager", Manager.getInstance());

但是那个错误"经理没有这样的功能" funcName"在eval ..."。

有可能吗?

UPD:
示例代码

public class ManagerClass {

    public void test()
    {
        System.out.println("Hello");
    }

    public static void test2()
    {
        System.out.println("Hello Static");
    }
}

public class NewClass {
    public static void main(String[] args) throws ScriptException {
        final ScriptEngine s = new ScriptEngineManager().getEngineByExtension("js");
        s.getBindings(ScriptContext.ENGINE_SCOPE).put("manager", new ManagerClass());
        s.eval("manager.test(); manager.test2();");
    }
}

1 个答案:

答案 0 :(得分:3)

解决。 正确的方法是

 s.eval("manager.test(); manager.class.static.test2();");