Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mozilla Rhino和扩展Java抽象类_Java_Javascript_Scripting_Rhino - Fatal编程技术网

mozilla Rhino和扩展Java抽象类

mozilla Rhino和扩展Java抽象类,java,javascript,scripting,rhino,Java,Javascript,Scripting,Rhino,根据以下错误消息,在sun.org.mozilla版本的Rhino中,JavaAdapter仅将接口作为其第一个参数,而不是任何其他类型的类: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorExcep tion: JavaAdapter: first arg should be interface Class (<Unknown source>#11) in <Unknown

根据以下错误消息,在sun.org.mozilla版本的Rhino中,
JavaAdapter
仅将接口作为其第一个参数,而不是任何其他类型的类:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorExcep
tion: JavaAdapter: first arg should be interface Class (<Unknown source>#11) in
<Unknown source> at line number 11

另一个答案对于太阳版的犀牛来说是正确的。从问题的措辞来看,你还不完全清楚切换到原始版本(Mozilla)Rhino是否适合你

具体来说,当Sun将Rhino添加到Java中时,“”,其中之一就是Mozilla的JavaAdapter。Sun编写了自己的“JavaAdapter”,但它比Mozilla的小得多,也简单得多,并且只能用于实现单个Java接口。Mozilla最初的JavaAdapter没有这样的限制:我一直使用它来实现抽象类

这与一些模糊的哲学差异无关,比如“JavaScript实际上与Java的“OO”方式不同”。Sun认为“使用JavaAdapter扩展Java类或实现多个接口的情况非常罕见”(同上),并决定删除此功能


如果可以接受在代码中附带一个850KB的jar文件,那么抓取Mozilla Rhino并实现所有您想要的抽象类

如果您发布了导致错误的代码和stacktrace,这会有所帮助。我根据您的建议添加了有问题的代码。提供一个850KB的jar比根本不提供该功能更容易接受!
var j = new JavaAdapter(foo.bar.abstractClass, {
    field : "test",
    method : function () {
        print("on enable");
    }
});