zoukankan      html  css  js  c++  java
  • 脚本执行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就行

  • 相关阅读:
    poj3693 Maximum repetition substring (后缀数组+rmq)
    spoj687 REPEATS
    bzoj3626: [LNOI2014]LCA (树链剖分+离线线段树)
    bzoj2243 [SDOI2011]染色 (树链剖分+线段树)
    SPOJ QTREE- Query on a tree (树链剖分)
    hdu5662 YJQQQAQ and the function (单调栈)
    hdu4348 To the moon (主席树 || 离线线段树)
    hdu3565 Bi-peak Number (有上界和下界的数位dp)
    修改文件上传大小限制
    强制不按行
  • 原文地址:https://www.cnblogs.com/henuliulei/p/9573827.html
Copyright © 2011-2022 走看看