проблема с плагином разработчика GWT 2.0 Chrome
недавно я обновил GWT SDK с 1.5.3 до 2.0.0 в проекте. Мне удалось решить все проблемы, кроме одной.
Я не могу использовать режим разработки с chrome. Страница входа в мое приложение загружается отлично, но когда я пытаюсь войти в систему (т. е. сделать RPC), я получаю следующую ошибку:
com.google.gwt.core.client.JavaScriptException: (Error): Error calling method on NPObject!
stack: Error: Error calling method on NPObject!
at eval at eval (native v8natives.js:132:1)
at unknown source
at __gwt_jsInvoke (http://grapple:8087/hosted.html:70:35)
at Array.0 (eval at eval (native v8natives.js:132:1))
at Object. (unknown source)
at __gwt_jsInvoke (http://grapple:8087/hosted.html:70:35)
at Array.1 (eval at eval (native v8natives.js:132:1))
at Object. (unknown source)
at __gwt_jsInvoke (http://grapple:8087/hosted.html:70:35)
at Array.1 (eval at eval (native v8natives.js:132:1))
__gwt_ObjectId: 2835
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.google.gwt.user.client.rpc.impl.SerializerBase$MethodMap$.deserialize$(SerializerBase.java)
at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:124)
at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:116)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:61)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter$ResponseReader.read(RequestCallbackAdapter.java:104)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:197)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at com.google.gwt.http.client.RequestBuilder.onReadyStateChange(RequestBuilder.java:396)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
at sun.reflect.GeneratedMethodAccessor231.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:619)
Я использую Chrome 4.0.295.0 и плагин разработчика 1.0.7263.
режим разработки отлично работает на FF и IE.
у вас есть есть идеи, что происходит?
спасибо.
2 ответов
Я не уверен, что это ошибка в плагине разработчика - это может быть ограничение браузера.
по мере того, как ваше приложение становится все более сложным, ограничение размера стека браузера в конечном итоге будет достигнуто. Некоторые браузеры имеют более высокие ограничения, чем другие (см. http://tests.novemberborn.net/javascript/callstack-size.html в различных браузерах). Safari имеет самый высокий, насколько я знаю, и для него есть официальный плагин разработчика GWT - по крайней мере, на платформе Mac.
плагин (на всех платформах) добавляет значительные накладные расходы в стек (именно поэтому эта проблема обычно исчезает в производстве), поэтому, если вы хотите продолжить разработку своего приложения в режиме отладки, лучшим советом, вероятно, является реструктуризация вашего кода. Вероятно, вы пытаетесь обрабатывать слишком много данных на стороне клиента сразу.
кажется, плагин Chrome имеет проблемы с глубоко вложенными и сериализованными объектами в devmode. В моем приложении я отправляю глубокое дерево, и оно терпит неудачу в Chrome, но преуспевает в Firefox.