Rhino API-使用org.mozilla.javascript.Context访问js方法?

Rhino API-使用org.mozilla.javascript.Context访问js方法?,java,javascript,rhino,javascript-engine,Java,Javascript,Rhino,Javascript Engine,如何访问此脚本中的get方法: (function( global ){ var Result; (Result = function( val ) { this.tpl = val || '' ; }).prototype = { get: function () { return 'text' ; } }; global.Result = Result ;

如何访问此脚本中的get方法:

(function( global ){

    var Result;

    (Result = function( val ) {
        this.tpl = val || '' ;
    }).prototype = {

        get: function ()
        {
            return 'text' ;
        }

    };

    global.Result = Result ;

} ( window ) ) ;
我试着这样做:

创建窗口类和结果接口:

public interface Result{ public String get(); }

public class Window { public Result Result;   }
调用js函数:

public void call() {

    Context context = Context.enter();

    ScriptableObject scope = context.initStandardObjects();

    FileReader fileReader = new FileReader("file.js");

    Object window = Context.javaToJS(new Window(), scope);

    scope.put("window", scope, window);

    context.evaluateReader(scope, fileReader, "test", 1, null);

    context.evaluateString(scope, "Result = window.Result;", "test", 2, null);

    context.evaluateString(scope, "result = Result.get();", "test", 3, null);
    Object result = scope.get("result", scope);
    System.out.println("\n" + Context.toString(result));
    context.exit();

}
但是我无法从get函数获取返回结果:

它对我有效:

public class Result extends ScriptableObject{

    @Override
    public String getClassName() {
        // TODO Auto-generated method stub
        return "Result";
    } 
}

public class Window extends ScriptableObject { 
    private Result Result;   

    public Result getResult() {
        return Result;
    }

    @Override
    public String getClassName() {
        return "Window";
    }
}

public void call() {

    Context context = Context.enter();

    ScriptableObject scope = context.initStandardObjects();

    FileReader fileReader = new FileReader("file.js");

    Window window = new Window();

    scope.put("window", scope, window);

    scope.put("window.Result", window.getResult());

    context.evaluateReader(scope, fileReader, "test", 1, null);

    context.evaluateString(scope, "Result = window.Result;", "test", 1, null);

    context.evaluateString(scope, "var myResult = new Result();", "test", 1, null);

    context.evaluateString(scope, "r = myResult.get();", "test", 1, null);
    Object result = scope.get("r", scope);
    System.out.println("\n" + Context.toString(result));
    context.exit();

}