溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java 腳本引擎Rhino執(zhí)行js代碼和文件

發(fā)布時間:2020-07-23 13:40:09 來源:網(wǎng)絡(luò) 閱讀:548 作者:wx5d21d5e6e5ab1 欄目:編程語言

測試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:['高中','大學(xué)']};";
    str+="print(user.name);";

    //執(zhí)行腳本
    engine.eval(str);
    //js代碼修改
    engine.eval("msg = 'i am a good man';");
    //java獲取值
    System.out.println(engine.get("msg"));

    //定義js函數(shù)
    engine.eval("function add(a,b){var sum=a+b;return sum;}");
    //執(zhí)行js函數(shù)
    //取得調(diào)用接口
    Invocable jsInvoke =(Invocable)engine; //Invocable是ScriptEngine的一個接口,調(diào)用函數(shù)需要強(qiáng)轉(zhuǎn)
    //執(zhí)行js函數(shù)
    Object result1=jsInvoke.invokeFunction("add", new Object[]{113,20});
    System.out.println(result1);

    //導(dǎo)入其他java包,使用其他包種的java類
    String jsCode=" var list=java.util.Arrays.asList([\"小學(xué)\",\"大學(xué)\"]);";
    engine.eval(jsCode);

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

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

    //執(zhí)行一個js文件(置于src下即可)
    URL url=helloworld.class.getClassLoader().getResource("nn.js"); //類加載器,返回url
    FileReader fr=new FileReader(url.getPath());
    engine.eval(fr);
    fr.close();    
}
}
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI