2015-12-16 1 views
0

J'essaie d'obtenir un accès hors connexion à mon calendrier google. Cette question a été répondue par ici: Offline Access to google calendar using java mais pour une raison quelconque, je reçois toujours une ClassNotFoundException, en essayant de s'authentifier. Je lance l'application localement sur un serveur Apache Tomcat 7 et j'utilise Eclipse Mars. J'ai installé les API suivantes via l'API Google ManagerPlugin:Tomcat 7 - Google Oauth2 - ClassNotFoundException - Java - Eclipse

  • Google OAuth2 API v2
  • (API Google OAuth v1) Le plugin me dit que v2 est préférable
  • Google Calendar API

Habituellement, je copie des fichiers jar externes dans le dossier WEB-INF/lib et dans le dossier Tomcat/lib mais je suppose que le plugin fait cela pour moi non? Toutes les API sont listées sur mon JavaBuildPath.

Si j'exécute les mêmes fonctions que Java Application cela fonctionne, donc quelque chose doit être faux avec les paramètres Tomcat.

Est-ce que quelqu'un avait un tel problème avant et peut m'aider? Merci d'avance.

Servlet (Vérification des pouvoirs enlevés):

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    response.getWriter().append("Served at: ").append(request.getContextPath()); 
    this.authenticate(request, response); 
} 


public void authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 

     String client_id    = ""; 
     String redirect_uri    = ""; 
     String scope     = "https://www.googleapis.com/auth/calendar"; 
     String client_secret   = ""; 
     List <String> scopes; 
     HttpTransport transport   = new NetHttpTransport(); 
     JsonFactory jsonFactory   = new JacksonFactory(); 

     scopes = new LinkedList<String>(); 
     scopes.add(scope); 
     GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(transport, jsonFactory, client_id, client_secret, scopes).build(); 
     GoogleAuthorizationCodeRequestUrl url = flow.newAuthorizationUrl(); 
     url.setRedirectUri(redirect_uri); 
     url.setApprovalPrompt("force"); 
     url.setAccessType("offline"); 
     String authorize_url = url.build(); 
     response.sendRedirect(authorize_url); 
    } 

Console:

java.lang.ClassNotFoundException: com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703) 
at net.meetme.CalendarServlet.authenticate(CalendarServlet.java:88) 
at net.meetme.CalendarServlet.doGet(CalendarServlet.java:42) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 
+1

Quel plugin? Vous allez toujours avoir besoin de déployer votre application et ses dépendances dans Tomcat. –

+0

Le plugin ne va rien faire. L'empaquetage habituel des bibliothèques dans le fichier de guerre devrait toujours être fait. – Kishore

Répondre

0

Merci pour vos réponses rapides. J'ai déployé tous les fichiers jar sur mon WEB-INF/lib. L'erreur a été que j'ai également ajouté tous les fichiers jar au chemin de compilation Java. Vous avez juste besoin de supprimer ces fichiers jar du chemin de compilation et cela fonctionne.