JavaScript的调用

2020-02-12  本文已影响0人  手打小黑板
package com.liming.script;

import javax.script.*;
import java.io.*;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.List;

public class ScriptTest {


    public static void main(String[] args){
        System.out.println("Hello JavaScript");

        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine hehe = scriptEngineManager.getEngineByName("javascript");

        hehe.put("name","林立");
        String evalStr = "var t = '你是谁';";
            evalStr += "var user = {a:'kkk',b:123,c:['qqq','www','eee']};";
        evalStr += "name='胖虎';var arr = user.a;";

        try {
            hehe.eval(evalStr);
            System.out.println(hehe.get("arr"));
            System.out.println(hehe.get("name"));

            hehe.eval("function add(a,b){ return a+b+''+3453455;}");

            Invocable jsInvoke = (Invocable)hehe;
            Object o = jsInvoke.invokeFunction("add",1,2);
            System.out.println(o);


            hehe.eval("var last = java.util.Arrays.asList([\"大雄\",\"胖虎\",\"小夫\"]);");
           // List<String> ls = Arrays.asList(new String[]{"大雄","胖虎","小夫"});

            List<String> list = (List<String>)hehe.get("last");
            for (String s :
                    list) {
                System.out.println(s);
            }

            URL url = ScriptTest.class.getClassLoader().getResource("test.js");

            hehe.eval(new FileReader(new File(url.getFile())));

            ((Invocable) hehe).invokeFunction("add");
            System.out.println(url.getPath());
            System.out.println(url.getFile());



        } catch (ScriptException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


    }
}











上一篇下一篇

猜你喜欢

热点阅读