加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java 脚本引擎Rhino执行js代码和文件

发布时间:2020-12-15 07:44:49 所属栏目:Java 来源:网络整理
导读:测试js脚本引擎 public class helloworld {public static void main(String[] args) throws Exception { //获得脚本引擎对象 ScriptEngineManager sem=new ScriptEngineManager(); ScriptEngine engine=sem.getEngineByName("javascript"); //定义变量,会存
测试js脚本引擎

public class helloworld {

public static void main(String[] args) throws Exception  {
    //获得脚本引擎对象
    ScriptEngineManager sem=new ScriptEngineManager();
    ScriptEngine engine=sem.getEngineByName("javascript");

    //定义变量,会存储到引擎上下文种,java和js都能取到
    engine.put("msg","good man");
    String  str="var user= {name:‘我‘,age:18,schools:[‘高中‘,‘大学‘]};";
    str+="print(user.name);";

    //执行脚本
    engine.eval(str);
    //js代码修改
    engine.eval("msg = ‘i am a good man‘;");
    //java获取值
    System.out.println(engine.get("msg"));

    //定义js函数
    engine.eval("function add(a,b){var sum=a+b;return sum;}");
    //执行js函数
    //取得调用接口
    Invocable jsInvoke =(Invocable)engine; //Invocable是ScriptEngine的一个接口,调用函数需要强转
    //执行js函数
    Object result1=jsInvoke.invokeFunction("add",new Object[]{113,20});
    System.out.println(result1);

    //导入其他java包,使用其他包种的java类
    String jsCode=" var list=java.util.Arrays.asList(["小学","大学"]);";
    engine.eval(jsCode);

    List<String> list2=(List<String>)engine.get("list");

    for(String temp:list2)
    {
        System.out.println(temp);
    }

    //执行一个js文件(置于src下即可)
    URL url=helloworld.class.getClassLoader().getResource("nn.js"); //类加载器,返回url
    FileReader fr=new FileReader(url.getPath());
    engine.eval(fr);
    fr.close();    
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读