每個(gè)Nashorn引擎使用多個(gè)腳本全局變量
import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.SimpleScriptContext; public class Main { public static void main(String[] args) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); engine.eval("var msg = "Hello globals""); engine.eval("print(this.msg);"); ScriptContext ctx = new SimpleScriptContext(); engine.eval("print(this.msg);", ctx); } }
上面的代碼生成以下結(jié)果。
以下代碼顯示了如何通過(guò)復(fù)制引擎的默認(rèn)上下文的引擎范圍綁定來(lái)共享腳本。
import static javax.script.ScriptContext.ENGINE_SCOPE; import javax.script.Bindings; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.SimpleScriptContext; public class Main { public static void main(String[] args) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); engine.eval("var msg = "Hello globals""); engine.eval("print(this.msg);"); ScriptContext ctx = new SimpleScriptContext(); ScriptContext defaultCtx = engine.getContext(); Bindings engineBindings = defaultCtx.getBindings(ENGINE_SCOPE); ctx.setBindings(engineBindings, ENGINE_SCOPE); engine.eval("print(this.msg);", ctx); } }
上面的代碼生成以下結(jié)果。
更多建議: