2013-03-16 3 views
4

im travaillant sur une webapp GWTClassNotFoundException GWTBridge

et tout en travaillant sur elle im obtenir cette exception tout en essayant d'obtenir un fichier XML à partir d'une URL dans un servlete supprimer.

je ne sais pas grand-chose sur les underworkings de GWT, peut-être quelqu'un peut me aider

c'est le code pour obtenir les données de l'URL

public static String readURL(String path) throws IOException{ 
    String data = ""; 

    URL url = new URL(path); 
    URLConnection conn = url.openConnection(); 
    BufferedReader br = new BufferedReader(new InputStreamReader(
      conn.getInputStream())); 

    String line; 

    while ((line = br.readLine()) != null) { 
     data += line; 
    } 
    br.close(); 

    System.out.println(data.length()); 

    return data; 
} 

et ceci est l'erreur im obtenir

 SEVERE: javax.servlet.ServletContext log: Exception while dispatching incoming RPC call 
    com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract void com.cpsc310.sc2.client.RouteService.storeParsedData()' threw an unexpected exception: java.lang.NoClassDefFoundError: com/google/gwt/core/client/GWTBridge 
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:389) 
    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 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    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:409) 
    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.NoClassDefFoundError: com/google/gwt/core/client/GWTBridge 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    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.xml.client.impl.XMLParserImpl.<clinit>(XMLParserImpl.java:29) 
    at com.google.gwt.xml.client.XMLParser.<clinit>(XMLParser.java:28) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    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.cpsc310.sc2.server.parser.BikeRouteParser.parseRoutesbyDOM(BikeRouteParser.java:39) 
    at com.cpsc310.sc2.server.RouteServiceImpl.storeParsedData(RouteServiceImpl.java:93) 
    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.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:115) 
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561) 
    ... 38 more 
Caused by: java.lang.ClassNotFoundException: com.google.gwt.core.client.GWTBridge 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:213) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
+0

Votre code en cours d'exécution sur le côté du serveur ou du côté client? – SteveP

+0

que le code que j'ai collé doit être appelé du côté serveur – Pita

Répondre

2

en règle générale, vous ne pouvez pas utiliser une classe qui est dans un paquet client en dehors d'un contexte client GWT (c.-à-côté serveur)
(ce qui est une règle que nous essayons d'appliquer à l'échelle mondiale à travers gwt-user.jar, il y a quelques exceptions, mais ils sont pour la plupart des détails de mise en œuvre)

Si vous voulez analyser XML sur votre serveur, utilisez javax.xml, pas com.google.gwt.xml.client.

+0

Je pensais que la façon de le faire est de mettre en place un service, puis l'interface du service sera dans le client, tandis que l'implémentation est dans le serveur. au moins c'est comment ils l'ont fait dans les tutoriels – Pita

+0

Une interface est différente, elle ne contient pas _code_. BTW, beaucoup de gens mettent maintenant leurs interfaces RPC dans un paquet 'shared'. –

+0

J'ai trouvé que je peux instancier une classe GWT dans une méthode d'une entité partagée, mais je ne peux pas la placer en tant que membre de la classe. Tant que vous l'appelez du côté client, cela fonctionne bien. – slugmandrew

0

Ajouter le ci-dessous dans votre projet (assurez-vous que le paquet est à droite):

package com.google.gwt.core.client; 
import com.google.gwt.core.shared.*; 
/** 
* Date: 1/17/13 
* Time: 12:37 PM 
* This class is used for fixing class not found com.google.gwt.core.client.GWTBridge; 
* 
* This is only needed for GXT 2 to work. Once we remove GXT2, this can be removed also. 
*/ 
public abstract class GWTBridge extends com.google.gwt.core.shared.GWTBridge { 
} 

Original: http://alexluca.com/2013/01/17/gwt-25-and-extgwt-224-classnotfoundexception-comgooglegwtcoreclientgwtbridge/

Questions connexes