4

我想将本机 Java 对象放入 ScriptEngine 绑定中以便于访问。
我的意思是避免大量的 Java.type(...)。
我尝试过这种方式。

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

但这失败了,出现错误“Manager 在 eval 中没有这样的函数“funcName”...”。

有可能吗?

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();");
    }
}
4

1 回答 1

3

解决了。正确的方法是

 s.eval("manager.test(); manager.class.static.test2();");
于 2014-06-06T09:10:35.193 回答