Hi everybody,
I have the following problem. I'm trying to do the following
public class Test {
public static class A extends ScriptableObject implements Scriptable {
public A() {
};
public String getClassName() {
return "A";
}
public void jsFunction_doSmth() {
System.out.println("I'm doing something");
};
}
public static class B extends ScriptableObject implements Scriptable {
private A a = new A();
public B() {
};
public String getClassName() {
return "B";
}
public void jsConstructor() {
}
public A jsGet_a() {
return a;
}
}
public static void main(String[] args) {
try {
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects(null, true);
ScriptableObject.defineClass(scope, A.class);
ScriptableObject.defineClass(scope, B.class);
cx.compileString("" +
"new A().doSmth();" +
"new B().a.doSmth();" +
"", "", 1, null).exec(cx, scope);
} catch (Exception e) {
e.printStackTrace();
}
}
}
and it gives me back the following output
I'm doing something
org.mozilla.javascript.EcmaError: TypeError: Cannot find default value
for object. (#1)
at
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3557)
at
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3535)
at
org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3563)
at
org.mozilla.javascript.ScriptRuntime.typeError1(ScriptRuntime.java:3575)
at
org.mozilla.javascript.ScriptableObject.getDefaultValue(ScriptableObject.java:774)
at
org.mozilla.javascript.ScriptableObject.getDefaultValue(ScriptableObject.java:693)
at org.mozilla.javascript.ScriptRuntime.toString(ScriptRuntime.java:722)
at
org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3644)
at
org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2186)
at
org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:117)
at org.mozilla.javascript.gen.c1._c0(:1)
at org.mozilla.javascript.gen.c1.call()
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
at
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
at org.mozilla.javascript.gen.c1.call()
at org.mozilla.javascript.gen.c1.exec()
at com.arcticlake.Test.main(Test.java:55)
which means that the first line ("new A().doSmth();") works fine but the
second one causes the exception.
As far as i understand it happens because inside jsGet_a() I should
return something else other than just an instance of A. But i don't know
what and how.
I will really appreciate any help on this.
Best regards,
--H
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino