首页 文章

当我使用GoogleAPI时,Tomcat启动错误

提问于
浏览
0

我对GoogleAPI有一些问题 .

Tomcat工作正常,但是当我写这些时,我的tomcat无法正常工作 .

HttpTransport transport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();

这是我的控制器 .

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.Collections;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.JsonParser;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;

import airbnb.dao.CustomerDAO;
import airbnb.vo.CustomerVO;


public class CustomerController extends HttpServlet{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private static final String CLIENT_ID = "Client_id";

    @Override
    public void init() throws ServletException {




    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String mode = req.getParameter("mode");
        //String customerCheck = req.getParameter("customerName");
        System.out.println("customerCheck");





        String id_token = req.getParameter("id_token");
        System.out.println("id_token"+id_token);

        HttpTransport transport = new NetHttpTransport();//*
        JsonFactory jsonFactory = new JacksonFactory();//*


        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                .setAudience(Collections.singletonList(CLIENT_ID))
                // Or, if multiple clients access the backend:
                //.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3))
                .build();


            GoogleIdToken idToken = null;
            try {
                idToken = verifier.verify(id_token);
            } catch (GeneralSecurityException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
                if (idToken != null) {
                    Payload payload = idToken.getPayload();

                    // Print user identifier
                    String userId = payload.getSubject();
                    System.out.println("User ID: " + userId);

                    // Get profile information from payload
                    String email = payload.getEmail();
                    boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
                    String name = (String) payload.get("name");
                    String pictureUrl = (String) payload.get("picture");
                    String locale = (String) payload.get("locale");
                    String familyName = (String) payload.get("family_name");
                    String givenName = (String) payload.get("given_name");

                    // Use or store profile information
                    // ...
                     System.out.println("User ID: " + userId);
                      System.out.println("email: " + email);
                      System.out.println("emailVerified: " + emailVerified);
                      System.out.println("name: " + name);
                      System.out.println("pictureUrl: " + pictureUrl);
                      System.out.println("locale: " + locale);
                      System.out.println("familyName: " + familyName);
                      System.out.println("givenName: " + givenName);

                } else {
                    System.out.println("Invalid ID token.");
                }   
    }
}

这是错误 .

java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法在java.util.concurrent.FutureTask.report(未知)启动组件[StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ Airbnb]]来自)org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)的java.util.concurrent.FutureTask.get(未知来源)org.apache.catalina.core.StandardHost.startInternal(StandardHost . java:872)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1419)org.apache.catalina .core.ContainerBase $ StartChild.call(ContainerBase.java:1409)位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的java.util.concurrent.FutureTask.run(未知来源)java.util.concurrent . java.lang.Thread.run中的ThreadPoolExecutor $ Worker.run(未知来源)(未知来源)引起:org.apache.catalina.LifecycleException:无法启动组件nent [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ Airbnb]] org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)... 6更多引起:java.lang.NoClassDefFoundError :com / google / api / client / http / HttpTransport at java.lang.Class.getDeclaredFields0(Native Method)at java.lang.Class.privateGetDeclaredFields(Unknown Source)at java.lang.Class.getDeclaredFields(Unknown Source)at org .apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:110)org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:262)org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet) .java:136)org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:66)位于org.apache.catalina的org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:328) . 在org.apache的startup.ContextConfig.configureStart(ContextConfig.java:778) . catgina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: 5105)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6更多引起:java.lang.ClassNotFoundException:com.google.api.client.http.HttpTransport at org.apache org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119).catalina.loader.WebappClassLoaderBase.loadClass .apache.catalina.core.ContainerBase startInternal重大:启动时子容器失败java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法在java启动组件[StandardEngine [Catalina] .StandardHost [localhost]] java.util.concurrent.FutureTask.get中的.util.concurrent.FutureTask.report(未知来源)(未知来自org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)org.apache.catalina.util.LifecycleBase .start(LifecycleBase.java:150)org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org . apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)org.apache.catalina.startup.Catalina.start(Catalina . java:656)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)中的(未知来源) by:org.apache.catalina.LifecycleException:无法在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)启动组件[StandardEngine [Catalina] .StandardHost [localhost]]org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1419)atg.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1409)at java.util.concurrent.FutureTask . 运行(未知来源)java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)java.lang.Thread.run(未知来源)引起: org.apache.catalina.LifecycleException:org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:)启动时子容器失败872)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6更多11 21,2017 10:16:54午前org.apache.catalina.startup.Catalina start重大:所需服务器组件无法启动,因此Tomcat无法启动 . org.apache.catalina.LifecycleException:无法在org.apache.catalina.startup.Catalina.start的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)启动组件[StandardServer [8005]]( Catalina.java:656)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method .invoke(未知来源)org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)引起:org.apache .catalina.LifecycleException:在org.apache.catalina.core.StandardServer.startInternal(StandardServer.java)的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)上启动组件[StandardService [Catalina]]失败 . :793)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 7更多引起:org.apache.catalina.LifecycleException:Fail ed在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)的org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)org处启动组件[StandardEngine [Catalina]] .apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 9更多引起:org.apache.catalina.LifecycleException:在org.apache.catalina.core.ContainerBase启动期间子容器失败 . startInternal(ContainerBase.java:947)org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 11更多

条件:jdk 1.8,Tomcat 8.5

请帮我解决这个错误 .

如果您想了解更多信息,请告诉我 . 我会上传它 .

谢谢 .

1 回答

  • 1

    检查这一行:

    java.lang.NoClassDefFoundError: com/google/api/client/http/HttpTransport
    

    你需要在here的Tomcat类路径中添加 google-api-client jar文件

相关问题