2012-01-18 13 views
19

Sto eseguendo un'applicazione GWT in modalità host. Sporadicamente ricevo uno strano HostedModeException lamentando il tipo di valore JS restituito da JSNI. A volte è durante la deserializzazione:Qualcosa di diverso da un int è stato restituito dal metodo 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) 

a volte a:

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) 

ancora una volta al

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) 

Qualcuno mi può aiutare su questo? Utilizzo GWT 2.4.0, Google Chrome 16.0.912.75 e GWT Developer Plugin 1.0.9738.

+0

Mi piacerebbe aiutare, dato che ho anche questo tipo di eccezione casuale ogni tanto ... ma non ne ho idea! In ogni caso, non influenza il mio debug di solito, quindi ci vivo solo ... ma sarebbe bello sapere cosa c'è dietro. – Renato

+0

Il caso di maggio era come il tuo, è successo una volta al mese o giù di lì, ma ora nel progetto al momento sto lavorando a questo sta accadendo in modo ricorrente, molte volte al giorno. Ecco perché sento che potrebbe esserci qualcosa di sbagliato nella mia configurazione. Sfortunatamente è anche difficile da riprodurre. In parole povere, è magico. – Saintali

+0

Questa domanda è duplicata all'indirizzo http://stackoverflow.com/questions/9984298/gwt-something-other-than-an-int-was-returned-from-jsni-method dove viene fornita una soluzione. – Glenn

risposta

17

Per alcuni motivi magici il cromo funziona molto male con GWT DevMode. Evento puntatore null casuale durante l'analisi di JSON, JSNI restituisce errori di tipo quando si lavora con GXT, le eccezioni di morte remota sono problemi molto comuni. È noto un problema ed è per questo che molte persone non utilizzano GWT DevMode con Chrome.

+0

Strano, visto che entrambi provengono da Google. In realtà ho un'applicazione legacy qui e il porting su Firefox richiede uno sforzo aggiuntivo :( – Saintali

+0

strano, infatti, abbiamo dovuto creare un parser JSON separato per il nostro progetto, perché DevMode in Chrome era sempre schiacciante con l'implementazione standard. Sfortunatamente non esistono soluzioni alternative per i framework come GXT. – jusio

+2

Vale la pena sottolineare che questo accade solo in modalità dev (il codice compilato andrà bene), e solo con alcuni jsni, alcune volte). Questo è un problema di vecchia data e alla fine si verificherà con qualsiasi jsni. http://code.google.com/p/google-web-toolkit/issues/detail?id=5778 –

Problemi correlati