Что-то кроме int было возвращено из метода JSNI
Я запускаю приложение GWT в размещенном режиме. Спорадически я получаю странный HostedModeException
жалуется на тип значения JS, возвращаемого из JSNI. Иногда это происходит во время десериализации:
com.google.gwt.dev.shell.HostedModeException: Something other than an int was returned from JSNI method '@com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader::readInt()': JS value of type boolean, expected int
at com.google.gwt.dev.shell.JsValueGlue.getIntRange(JsValueGlue.java:266)
at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:144)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeInt(ModuleSpace.java:247)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeInt(JavaScriptHost.java:75)
at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.readInt(ClientSerializationStreamReader.java)
иногда в:
com.google.gwt.dev.shell.HostedModeException: Something other than an int was returned from JSNI method '@com.google.gwt.user.client.impl.DOMImpl::eventGetTypeInt(Ljava/lang/String;)': JS value of type null, expected int
at com.google.gwt.dev.shell.JsValueGlue.getIntRange(JsValueGlue.java:266)
at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:144)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeInt(ModuleSpace.java:247)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeInt(JavaScriptHost.java:75)
at com.google.gwt.user.client.impl.DOMImpl.eventGetTypeInt(DOMImpl.java)
at com.google.gwt.user.client.impl.DOMImpl.eventGetTypeInt(DOMImpl.java:62)
at com.google.gwt.user.client.DOM.eventGetType(DOM.java:602)
at com.google.gwt.user.client.Event$.getTypeInt$(Event.java:695)
at com.extjs.gxt.ui.client.util.BaseEventPreview.onPreviewNativeEvent(BaseEventPreview.java:139)
еще раз в
com.google.gwt.dev.shell.HostedModeException: Something other than a float was returned from JSNI method '@com.extjs.gxt.ui.client.util.Util::parseFloat(Ljava/lang/String;F)': JS value of type boolean, expected float
at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:118)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeFloat(ModuleSpace.java:235)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeFloat(JavaScriptHost.java:67)
at com.extjs.gxt.ui.client.util.Util.parseFloat(Util.java)
at com.extjs.gxt.ui.client.core.El.getFrameSize(El.java:1081)
at com.extjs.gxt.ui.client.core.El.setSize(El.java:2702)
at com.extjs.gxt.ui.client.widget.BoxComponent.setSize(BoxComponent.java:501)
at com.extjs.gxt.ui.client.widget.BoxComponent.setHeight(BoxComponent.java:320)
Может ли кто-нибудь помочь мне в этом? Я использую GWT 2.4.0, Google Chrome 16.0.912.75 и GWT Developer Plugin 1.0.9738.
1 ответ
Решение
По какой-то магической причине Chrome очень плохо работает с GWT DevMode. Случайное исключение нулевого указателя при синтаксическом анализе JSON, ошибки возвращаемых типов JSNI при работе с GXT, исключения удаленной смерти - очень распространенная проблема. Это известная проблема, и поэтому большинство людей не используют GWT DevMode с Chrome.