• 脚本执行JavaScript代码


    下面是一个具体的demo测试脚本引擎,执行javas文件、

    package Rhino;

    import java.io.FileReader;
    import java.net.URL;

    import javax.script.Invocable;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;

    /*
    * 测试脚本引擎
    */
    public class Demo01 {
    public static void main(String[] args) throws Exception {
    //获得脚本引擎对象
    ScriptEngineManager sem=new ScriptEngineManager();
    ScriptEngine engine=sem.getEngineByName("javascript");
    //定义变量,存储到引擎上下文里面
    engine.put("msg", "tom is a boy");
    String str="var user= {name:'liulei',age:18,schools:['清华','北大']};";
    str += "print(user.name);";
    //执行脚本
    engine.eval(str);
    engine.eval("msg='sxt is a good school';");
    System.out.println(engine.get("msg"));
    //定义函数
    engine.eval("function add(a,b){var sum=a + b; return sum;}");
    //取得调用接口
    Invocable invocable=(Invocable) engine;
    //执行脚本里面的方法
    Object result=invocable.invokeFunction("add", new Object[]{13,30});
    System.out.println(result);
    // //导入其他java 包,使用其他包中的java类
    // String jsCode= "importPackage(java.util); var list=Arrays.asList(["北京","上海"]);";
    // engine.eval(jsCode);
    // List<String> list2=(List<String>)engine.get("list");
    // for(String temp:list2) {
    // System.out.println(temp);
    // }
    //执行一个js文件(我们将a.js至于项目的src下即可)
    URL url=Demo01.class.getClassLoader().getResource("a.js");
    FileReader fr=new FileReader(url.getPath());
    engine.eval(fr);
    fr.close();
    }
    }

     总之java也可以执行其他的语言,只需要查阅相应的api就行

  • 相关阅读:
    CF-911E.Stack Sorting(栈)
    随机算法 && CodeForces
    CF-579D."Or" Game(或运算)
    CF-242E.XOR on Segment(异或线段树)
    莫队 && 洛谷 P1494 [国家集训队]小Z的袜子
    洛谷 P4168 [Violet]蒲公英(分块)
    分块 && 洛谷 P2801 教主的魔法
    启发式合并 && U41492 树上数颜色
    使用mysqlbinlog server远程备份binlog的脚本
    mysqldump备份过程中都干了些什么
  • 原文地址:https://www.cnblogs.com/henuliulei/p/9573827.html
Copyright © 2020-2023  润新知