我希望将原生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();");
}
}
答案 0 :(得分:3)
解决。 正确的方法是
s.eval("manager.test(); manager.class.static.test2();");