是否可以从ScriptEngineManager中访问Java方法?允许Java的ScriptEngineManager访问某些Java方法
我发现了如何使用Invocable invoke函数方法,但现在我需要相反的事情发生。
public class Main {
public static void main (String[] args) throws Exception {
String source = "var results = system.foo('example'); \n" +
" \n" +
"if(results == \"hello\") { \n" +
" print(\"ding dong.\"); \n" +
"} \n";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
engine.eval(source);
}
}
public class System {
public static String foo (String x) throws Exception {
// do something with x
return("hello");
}
}
所以,当我运行system.foo它应该运行System.foo中的方法。
如果您正在寻找JavaScript引擎,我会使用最新版本的Rhino。与JRE一起打包的版本是旧的。 – babsher
我需要能够指定他们可以访问哪些类。 – Mark