【问题标题】:Tomcat 7 - Google Oauth2 - ClassNotFoundException - Java - EclipseTomcat 7 - Google Oauth2 - ClassNotFoundException - Java - Eclipse
【发布时间】:2015-12-19 19:29:51
【问题描述】:

我正在尝试离线访问我的 Google 日历。 这个问题之前已经回答过这里: Offline Access to google calendar using java 但由于某种原因,我在尝试进行身份验证时总是得到 ClassNotFoundException。

我在 Apache Tomcat 7 服务器上本地运行应用程序并使用 Eclipse Mars。我通过 Google API ManagerPlugin 安装了以下 API:

  • Google OAuth2 API v2
  • (Google OAuth API v1) 插件告诉我,首选 v2
  • 谷歌日历 API

通常我将外部 jar 文件复制到 WEB-INF/lib 文件夹和 Tomcat/lib 文件夹,但我猜插件会为我这样做,对吗?所有 API 都列在我的 JavaBuildPath 上。

如果我运行与 Java 应用程序相同的功能,它可以工作,所以 Tomcat 设置一定有问题。

以前有没有人遇到过这样的问题并可以帮助我? 提前致谢。

Servlet(已删除凭据):

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);
    }

控制台:

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)

【问题讨论】:

  • 什么插件?您仍然需要将应用程序及其依赖项部署到 tomcat 中。
  • 插件不会有任何作用。 war 文件中的库的通常打包仍然应该完成。

标签: java eclipse tomcat


【解决方案1】:

感谢您的快速回复。 我将所有 jar 文件部署到我的 WEB-INF/lib。

错误是我还将所有 jar 文件添加到 Java 构建路径。 您只需从构建路径中删除这些 jar- 文件即可。

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 2012-04-20
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多