Re: Still problems with com.google.gwt.core.client.GWTBridge

瀏覽次數:4,534 次
跳到第一則未讀訊息

Pablo Nussembaum

未讀,
2012年10月31日 下午1:44:122012/10/31
收件者:google-we...@googlegroups.com、Moritz
Moritz,
Until you find the actual problem you can use this jar.

Regards,
--
Bauna

On 10/31/2012 09:08 AM, Moritz wrote:
> Hi all,
>
> I get a NoClassDefFoundError for com.google.gwt.core.client.GWTBridge
> when I throw a RuntimeException on a server RPC. When I do not throw
> the RuntimeException and the RPC completes fine also no
> NoClassDefFoundError is thrown.
> As a workaround, I created an abstract
> com.google.gwt.core.client.GWTBridge which simply extends the
> ...shared.GWTBridge class. I read about
> http://code.google.com/p/google-web-toolkit/issues/detail?id=7527 but
> it seems that this is something different, or not? Any solution?
>
> Cheers,
> Moritz.
>
> PD, here comes the full stack trace, the exception seems to be related
> to the Guice filters:
>
> SEVERE: javax.servlet.ServletContext log: Exception while dispatching
> incoming RPC call
> java.lang.NoClassDefFoundError: com/google/gwt/core/client/GWTBridge
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:186)
> at
> com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
> at
> com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:64)
> at
> com.google.gwt.user.client.rpc.core.java.util.Arrays$ArrayList_CustomFieldSerializer.serialize(Arrays.java:64)
> at
> com.google.gwt.user.client.rpc.core.java.util.Arrays$ArrayList_CustomFieldSerializer.serializeInstance(Arrays.java:94)
> at
> com.google.gwt.user.client.rpc.core.java.util.Arrays$ArrayList_CustomFieldSerializer.serializeInstance(Arrays.java:34)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:786)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
> at
> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:755)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
> at
> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
> at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:605)
> at
> com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:393)
> at
> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:579)
> at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
> at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
> at
> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at
> com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
> at
> com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
> at
> com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
> at
> com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
> at
> com.googlecode.objectify.cache.AsyncCacheFilter.doFilter(AsyncCacheFilter.java:59)
> at
> com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:49)
> at
> com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
> at
> com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
> at
> com.MYPROJECT.server.NamespaceFilter.doFilter(NamespaceFilter.java:22)
> at
> com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
> at
> com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
> at
> com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
> at
> com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
> at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
> at
> com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:383)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:326)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> at
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: java.lang.ClassNotFoundException:
> com.google.gwt.core.client.GWTBridge
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
> at
> com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:207)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> ... 71 more
> --
> You received this message because you are subscribed to the Google
> Groups "Google Web Toolkit" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-web-toolkit/-/9ph3EIFIOeUJ.
> To post to this group, send email to google-we...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-web-tool...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-web-toolkit?hl=en.

gwt-fix-2.5.0-rc2.jar

Thomas Broyer

未讀,
2012年10月31日 晚上7:44:322012/10/31
收件者:google-we...@googlegroups.com
I've reopened the issue; it looks like we indeed didn't fix it completely.

Thomas Broyer

未讀,
2012年12月21日 晚上10:43:422012/12/21
收件者:google-we...@googlegroups.com、Moritz


On Friday, December 21, 2012 6:40:24 PM UTC+1, Ara Yapejian wrote:
I'm also seeing this, has their been any updates or anyone know of a fix?

Please refer to the issue linked in the first post in this thread.
 
This happened trying to upgrade my jars to gwt 2.5

We'll release 2.5.1 soon that'll fix it. 

Ara Yapejian

未讀,
2012年12月22日 上午8:56:302012/12/22
收件者:google-we...@googlegroups.com、Moritz
Thank you I'll take a look...

Blaze

未讀,
2012年12月22日 上午11:42:582012/12/22
收件者:google-we...@googlegroups.com、Moritz
Hi,

I had the same problem..

the com/google/gwt/core/client/GWTBridge is inside the dev.jar and adding this jar on the server side will fix the problem..*its a 30mb jar I dont recommend this)
or u can just take this class and add it to the servlet.jar ...

The class is just un extension of the shared GWTBridge class ...


what actually is cossing the problem is that GWT.class uses com/google/gwt/core/client/GWTBridge inside 

 static void setBridge(GWTBridge bridge) {
    sGWTBridge = bridge;
    if (bridge != null) {
      setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler());
    }

sGWTBridge in this class is not having un import inside meaning its seeing the class from the same package..


if on a server side u use this class(its used for a dual implementation) where u check something like

GWT.isClient()

or 

GWT.isProdMod

rhis will always trow the class not found exp...


Hope this helps..

B

Thomas Broyer

未讀,
2013年6月5日 上午10:32:042013/6/5
收件者:google-we...@googlegroups.com


On Wednesday, June 5, 2013 3:51:52 PM UTC+2, Andrei Costescu wrote:
I see this happening in 2.5.1 as well.
(I used the fix jar in 2.5.0  - I'll keep using it in 2.5.1)

Are you using any third-party GWT library on the server? Which class is trying to access com.google.gwt.core.client.GWT? (rather than com.google.gwt.core.shared.GWT) 

Stefan Sandhop

未讀,
2013年8月27日 上午10:03:322013/8/27
收件者:google-we...@googlegroups.com
On Wednesday, June 5, 2013 4:32:04 PM UTC+2, Thomas Broyer wrote:

Are you using any third-party GWT library on the server? Which class is trying to access com.google.gwt.core.client.GWT? (rather than com.google.gwt.core.shared.GWT) 
 
For me this happens with com.google.gwt.event.dom.client.PrivateMap using GWT 2.5.1 while trying to create a ClickEvent in a JUnit test (not GWTTestCase). I think, there is no need to use com.google.gwt.core.client.GWT there.


 

Thomas Broyer

未讀,
2013年8月27日 上午10:27:422013/8/27
收件者:google-we...@googlegroups.com
It's possible that using shared.GWT there would solve your immediate problem, but ClickEvent definitely is client code, with lots of JSNI; it's not meant to be used outside a “GWT environment” (i.e. plain JVM), so I think it's unlikely we'd make the change.
Try to refactor your code, or pass 'null' instead of a ClickEvent instance, or have a look at gwt-test-utils or gwt-mockito.

Stefan Sandhop

未讀,
2013年8月28日 上午9:26:312013/8/28
收件者:google-we...@googlegroups.com
I agree with you. 
Passing 'null' did the trick in most cases.

So I just wanted to share my finding as it would not be a big change and would not make a difference in any other case.

m.as...@gmail.com

未讀,
2013年9月19日 上午11:20:222013/9/19
收件者:google-we...@googlegroups.com、Moritz
Thanks, this fixed the problem for me.
回覆所有人
回覆作者
轉寄
0 則新訊息