mozilla Rhino和扩展Java抽象类
根据以下错误消息,在sun.org.mozilla版本的Rhino中,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
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");
}
});