2
我在用python,groovy和javascript編寫的不同腳本文件上有相同的自定義函數。用戶可以選擇一個想要使用的腳本。我想以通用的方式從這些腳本中調用函數。使用ScriptEngine從Java調用自定義腳本函數
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("python");
Bindings bindings = engine.createBindings();
engine.eval(new FileReader("C:/Users/Cgr/Desktop/CustomPython.py");
Invocable inv = (Invocable) engine;
System.out.println(inv.invokeFunction("customConcatFunc", "str1", "str2"));
有了這樣我可以打電話給我的職務甚至改變ScriptEngineManager參數爲「JavaScript的」或「常規」以更改與「CustomJs.js」或「Customgroovy.groovy」讀者文件。
不過,我不知道那有沒有辦法來調用功能,而無需使用invokeFunction
象下面這樣:
首先,評估腳本,並把結果放到這個對象綁定,然後調用函數。
bindings.put("x", "str1");
bindings.put("y", "str2");
bindings.put("script", engine.eval(new FileReader("C:/Users/Cgr/Desktop/CustomgrPython.py")));
engine.eval("script.customConcatFunc(x,y)", bindings);
所以,這是對我來說最普通的方式,如果有這樣的方式或有任何其他的建議嗎?