Rhino-使用自定义类参数调用javascript函数时出错

Rhino-使用自定义类参数调用javascript函数时出错,javascript,java,rhino,Javascript,Java,Rhino,我用Java制作了一个Bukkit插件。 我的插件基于Mozilla的Rhino。 我将参数放在函数回调“onPlayerJoin”中的“\u Player”。 我执行了它,但它不起作用;( 您知道这个错误吗?或者需要修改的内容吗? 错误的简要信息如下 TypeError: Cannot find default value for object. (test.js#1) 代码(Java): 代码1(Javascript,不工作): 代码2(Javascript,工作模式): 如何从java级

我用Java制作了一个Bukkit插件。 我的插件基于Mozilla的Rhino。 我将参数放在函数回调“onPlayerJoin”中的“\u Player”。 我执行了它,但它不起作用;(

您知道这个错误吗?或者需要修改的内容吗?

错误的简要信息如下

TypeError: Cannot find default value for object. (test.js#1)
代码(Java):

代码1(Javascript,不工作):

代码2(Javascript,工作模式):


如何从java级别调用callMethod方法?@Dominikunicki callMethod(“onPlayerJoin”,新玩家(e.getPlayer());
public static void callMethod(String functionName, Object... args) {
        for(String filename : Main.scripts) {
            Context context = Context.enter();
            Scriptable scope = context.initStandardObjects();

            try {
                ScriptableObject.defineClass(scope, _Bukkit.class);
                ScriptableObject.defineClass(scope, _Player.class, false, true);
                ScriptableObject.putProperty(scope, "ChatColor", constantsToObj(_ChatColor.class));
                context.evaluateReader(scope, new FileReader(FileSystem.LOC_SCRIPT+filename), filename, 0, null);
                Object object = scope.get(functionName, scope);

                if(object != null && object instanceof Function) {
                    Function function = (Function) object;
                    function.call(context, scope, scope, args);
                }
            } catch(RhinoException e) {
                Debug.danger(e.getMessage()+" ("+e.lineNumber()+", "+e.columnNumber()+")");
            } catch(IOException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
                Debug.danger("An error occured while compiling code.");
            } finally {
                Context.exit();
            }
        }
    }

@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
    callMethod("onPlayerJoin", new _Player(e.getPlayer()));
}
function onPlayerJoin(player) {
    player.sendMessage("hello!");
}
function onPlayerJoin(player) {
    new Player("playername").sendMessage("hello!");
}