问题:js函数可能有多个,之间有相互调用关系,有jquery

jar包 org.mozilla.javascript-1.7.2

js   envjs-1.2.js

java代码

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;

import .IOUtils;
import org.apache.commons.lang.Validate;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.Scriptable;

public class RhinoScaper {
    private Context context;
    private Scriptable scriptable;

    /**
     * 初始化方法
     */
    public void init() {
        context = ContextFactory.getGlobal().enterContext();
        scriptable = context.initStandardObjects(null);
        context.setOptimizationLevel(-1);
        context.setLanguageVersion(Context.VERSION_1_5);
        context.evaluateString(scriptable, "var v='sssaass';"
                + "var print = function(v) {"
                + " java.lang.System.out.println(v);return v ;"
                + " };function hah(){return v }", "print", 1, null);
        String files = "envjs-1.2.js,jquery.js,自己的js";
        String[] file = files.split(",");
        for (String f : file) {
            evaluateJs(f);
        }
    }

    /**
     * 调用函数
     * 
     * @param functionName
     * @param functionArags
     * @return
     */
    public Object invokFunction(String functionName, Object... functionArags) {
        Validate.notNull(context, "context is null");
        Validate.notNull(scriptable, "scriptable is null");
        Function function = (Function) scriptable.get(functionName, scriptable);
        Object call = function.call(Context.getCurrentContext(), scriptable,
                function, functionArags);
        // System.out.println("reslult  = "+call.toString());
        return call;
    }

   
    public void evaluateJs(String f) {
        Validate.notNull(context, "context is null");
        Validate.notNull(scriptable, "scriptable is null");
        FileReader in = null;
        try {
            in = new FileReader(f);
            context.evaluateReader(scriptable, in, f, 1, null);
        } catch (FileNotFoundException e1) {
            // e1.printStackTrace();
            throw new RuntimeException("unknown file " + f);
        } catch (IOException e1) {
            e1.printStackTrace();
        } finally {
            // close(in);
            IOUtils.closeQuietly(in);
        }
    }

    public static void main(String[] args) throws Exception {
        RhinoScaper rhinoScaper = new RhinoScaper();
        rhinoScaper.init();
        
        String param1= "";//参数1
     String param2="";//参数2
        Object result = rhinoScaper.invokFunction("函数名称", param1,
                param2);
        System.out.println(result);

    }

    /**
     * 加载js文件
     * 
     * @param sourceName
     *            名称
     * @param classpathURI
     *            文件路径
     */
    public void loadJS(String sourceName, String classpathURI) {
        Validate.notNull(context, "context is null");
        Validate.notNull(scriptable, "scriptable is null");
        String js = null;
        InputStream inputStream = null;
        try {
            inputStream = getClass().getResourceAsStream(classpathURI);
            js = IOUtils.toString(inputStream, "UTF-8");// 设置默认js文件编码为utf-8
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            IOUtils.closeQuietly(inputStream);
        }
        context.evaluateString(scriptable, js, sourceName, 1, null);
    }

    /**
     * 加载js字符串
     * 
     * @param source
     *            js字符串(注意处理js中由于变量名为throws,float类似名称导致的报错)
     * @param sourceName
     *            名称
     */
    public void JSloadString(String source, String sourceName) {
        Validate.notNull(context, "context is null");
        Validate.notNull(scriptable, "scriptable is null");
        context.evaluateString(scriptable, source, sourceName, 1, null);
    }
}