Java 调用 Javascript 函数的范例 桃扇骨 2022-06-16 01:37 198阅读 0赞 在Java 7 以后,可以在Java代码中调用javascript中的函数,请看下面的例子: ![复制代码][copycode.gif] package com.lee; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Scanner; import javax.script.Bindings; import javax.script.Invocable; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; /** * * @author liyanxue */ public class JavaInvokeJS { public static void main(String[] args) throws FileNotFoundException, ScriptException, NoSuchMethodException { ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript" ); Bindings bind = engine.createBindings(); bind.put( "factor", 0); engine.setBindings(bind, ScriptContext. ENGINE_SCOPE); // 输入方式 /* Scanner input = new Scanner(System.in); while (input.hasNextInt()) { int first = input.nextInt(); int second = input.nextInt(); System.out.println("输入的参数是:" + first + ", " + second); engine.eval(new FileReader("/Users/ liyanxue/model.js")); if (engine instanceof Invocable ) { Invocable in = (Invocable ) engine; // 执行 js函数 Double result = (Double) in.invokeFunction("formula", first, second); System.out.println("运算结果是:" + result.intValue()); } } */ int first = 23; int second = 7; System. out.println("输入的参数是:" + first + ", " + second); engine.eval( new FileReader("/Users/liyanxue/model.js" )); if (engine instanceof Invocable) { Invocable in = (Invocable) engine; // 执行js函数 Double result = (Double) in.invokeFunction( "formula", first, second); System. out.println("运算结果是:" + result.intValue()); } } } ![复制代码][copycode.gif] /Users/liyanxue/model.js里的代码: function formula(var1, var2) { return var1 + var2 + factor; } [copycode.gif]: /images/20220616/ad3b9100a58e4a3fb8f398db458de2ad.png
还没有评论,来说两句吧...