我在我的Java应用程序中使用Mozilla Rhino(JavaScript引擎)。我定义了一个像这样的ScriptableObject:
public class TheObj extends ScriptableObject {
public TheObj(){
//nothing
}
public TheObj(Scriptable scope, Scriptable prototype) {
super(scope, prototype);
}
@Override
public String getClassName() {
return "Foo";
}
@JSStaticFunction
public static Foo foo(Foo foo){
return foo;
}
}
Foo类是:
public class Foo {
public void bar(){
System.out.println("it works");
}
}
但是当我尝试ScriptableObject.defineClass(scope, TheObj.class);
scope
是来自Context.enter().initStandardObjects();
的Scriptable时,它会抛出
org.mozilla.javascript.EvaluatorException: Unsupported parameter type "Foo" in method "bar".
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
我明白了。我刚刚使用了Context.jsToJava(Object, Class<?>);
(实际上,函数foo()需要将Foo参数用作Java,而不仅仅是返回它)