JsArrayNumber::get(I)': JS value of type undefined, expected double

54 views
Skip to first unread message

andymel

unread,
Jul 13, 2014, 10:47:49 AM7/13/14
to google-web-tool...@googlegroups.com
Hi,

I am trying to find a bug in my first gwt project. I wrote another little project with just 3 classes to show just the behavior I don't understand.
I try to initialize objects in JavaScript (need that to use an existing js script in my (new) Java Code).

For my test I simply want to get an Object with a number array and read that...but the call of get(i) leads to 'Something other than a double was returned from JSNI method'.

Can anybody point me in the right direction please!?

Thanks a lot!! :)

JavaScript:
var TestObj = {};

/* helper function to get such an object
 * not possible to get it directly?!*/
function getMem1(x,y){
return new TestObj.member1([x,y]);
}

TestObj.member1 = function(p){
// should be an array of two floating point values (saved as double in java)
this.p = p;
}

My Java Object:
public class TestObjJava {

private double x;
private double y;
public TestObjJava(double x, double y) {
this.x = x;
this.y = y;
}

public native TestObjJS getAsJSObj() /*-{
return $wnd.getMem1(this.x, this.y)
}-*/;
}

My JavaScriptObject
public class TestObjJS extends JavaScriptObject {

protected TestObjJS() {}

public final native JsArrayNumber getP() /*-{ return this.p; }-*/;
}

The code that leads to the error:
public void onModuleLoad() {
TestObjJava jObj = new TestObjJava(12, 23);
TestObjJS jsObj = jObj.getAsJSObj();
JsArrayNumber p = jsObj.getP();
System.out.println(p);
for(int i=0; i<p.length(); i++){
System.out.println(i+": "+p.get(i));
}
}

The full error message:

onModuleLoad() threw an exception
Exception while loading module andymel.tests.gwttests.client.GWTTests. See Development Mode for details.


java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:411)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)
Caused by: com.google.gwt.dev.shell.HostedModeException: Something other than a double was returned from JSNI method '@com.google.gwt.core.client.JsArrayNumber::get(I)': JS value of type undefined, expected double
at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:112)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeDouble(ModuleSpace.java:238)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeDouble(JavaScriptHost.java:59)
at com.google.gwt.core.client.JsArrayNumber$.get$(JsArrayNumber.java)
at andymel.tests.gwttests.client.GWTTests.onModuleLoad(GWTTests.java:30)
... 9 more


Julien Dramaix

unread,
Jul 13, 2014, 12:52:03 PM7/13/14
to google-web-tool...@googlegroups.com
Hi Andy,

Please use the mailing list  google-we...@googlegroups.com  for requesting help with your code. This mailing list is to discuss about the development of GWT itself.

Hint to solve your issue: your method TestObj.member1() returns nothing... add "return this;" should solve your problem.

Julien


--
You received this message because you are subscribed to the Google Groups "GWT Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/e3383695-7f7f-46f1-b346-25f2dcc338e3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages