Tomcat7-GoogleOAuth2-ClassNotFoundException-Java-Eclipse
我正在尝试离线访问我的谷歌日历。 这个问题在这里已经得到了回答: 但由于某些原因,在尝试进行身份验证时,我总是得到一个ClassNotFoundException 我正在ApacheTomcat7服务器上本地运行应用程序,并使用EclipseMars。我通过Google API ManagerPlugin安装了以下API:Tomcat7-GoogleOAuth2-ClassNotFoundException-Java-Eclipse,java,eclipse,tomcat,Java,Eclipse,Tomcat,我正在尝试离线访问我的谷歌日历。 这个问题在这里已经得到了回答: 但由于某些原因,在尝试进行身份验证时,我总是得到一个ClassNotFoundException 我正在ApacheTomcat7服务器上本地运行应用程序,并使用EclipseMars。我通过Google API ManagerPlugin安装了以下API: 谷歌OAuth2API v2 (Google OAuth API v1)插件告诉我,v2是首选 谷歌日历API 通常我会将外部jar文件复制到WEB-INF/lib文件夹
- 谷歌OAuth2API v2
- (Google OAuth API v1)插件告诉我,v2是首选
- 谷歌日历API
谢谢你的快速回复。 我将所有jar文件部署到我的WEB-INF/lib中 错误在于,我还将所有jar文件添加到Java构建路径中。
您只需要从构建路径中删除这些jar文件,它就可以工作。什么插件?您仍然需要将您的应用程序及其依赖项部署到tomcat中。该插件不会起任何作用。war文件中库的常规打包仍然应该完成。
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)